# 天信地图服务

天信地图服务(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
Last Updated: 10/18/2022, 11:32:23 AM