# 天信地图服务
天信地图服务(TxMapService)为天信瓦片地图提供打开、主题设置、专题图切换等服务。
import { defined } from '@tx3d/core';
import {
MapView,
TerrainProvider,
TxImageryProvider,
TxMapService,
calculateTxMapSizeAndCenter
} from '@tx3d/tilemap';
// 地图服务
let mapService = null;
// 地图视图
let mapView = null;
// 天信瓦片地图“供应商”
let imageryProvider = null;
// 打开瓦片地图
openTileMap( 'http://1.119.168.67:40105/', 'TXMK', 't00000' );
/**
* 打开瓦片地图
*/
async function openTileMap( url, mapid, viewsign ) {
// 释放当前瓦片地图
if ( defined( mapView ) ) {
mapView.dispose();
mapView = null;
}
// 创建地图服务
mapService = new TxMapService( url );
// 打开地图
await mapService.openSlice( mapid, viewsign );
// 获取地图元数据
const meta = await mapService.getMeta();
// 地图范围
const bounds = [ meta.extLeft, meta.extTop, meta.extRight, meta.extBottom ];
// 计算地图尺寸&中心点
const { size, center } = calculateTxMapSizeAndCenter( bounds );
// 配置地测坐标系
engine.crsManager.setupGeodeticCRS( { name: 'CAD', cad: { bounds: bounds } } );
// 配置世界坐标系
engine.crsManager.setupWorldCRS( { name: 'WORLD' } );
// 重置场景相对中心点(注:必不可少)
engine.crsManager.relativeCenter = engine.crsManager.geodeticToWorld( center[ 0 ], center[ 1 ], 0.0 );
// 创建天信瓦片地图“供应商”
imageryProvider = new TxImageryProvider( {
url: mapService.tileUrl(),
transparent: true,
minZoom: 0,
maxZoom: 20
} );
// 创建MapView
mapView = new MapView( engine, {
maxTileSize: [ size, size ],
// 华夏天信瓦片数据“供应商”
imageryProvider: imageryProvider,
// 地形数据“供应商”
terrainProvider: new TerrainProvider( { elevation: 0.0 } )
} );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82