# 瓦片地图

使用瓦片地图可以在三维场景中加载互联网地图或天信CAD瓦片地图。

注意

使用瓦片地图需要引入 @tx3d/tilemap 包;
当前互联网地图只支持局部范围的加载调度,不支持全球范围。

# 构建瓦片地图

使用 @tx3d/tilemap 包中的MapView类构建瓦片地图。

import { RenderOrder } from '@tx3d/core';
import { 
    
    DebugImageryProvider, 
    DefaultImageryProvider, 
    MapView, 
    TencentImageryProvider,
    TerrainProvider

} from '@tx3d/tilemap';

// 构建瓦片地图
const mapView = new MapView( engine, {

    extend: [ 50000, 50000 ],       // 地图范围
    longitude: 116.39712799999998,  // 地图中心点经度值
    latitude: 39.90968029312864,    // 地图中心点纬度值
    clipping: true,                 // 是否裁剪地图边界

    renderOrder: RenderOrder.Default - 1, // 设置瓦片地图渲染顺序,可选,默认RenderOrder.Default
    
    // 腾讯卫星影像数据“供应商”
    imageryProvider: new TencentImageryProvider( {

        url: 'https://{subdomain}.map.gtimg.com/sateTiles/{z}/{floorX}/{floorY}/{x}_{y}.jpg?version=240',   // 数据服务地址
        subdomains: [ 'p0', 'p1', 'p2', 'p3' ],                                                             // 子域名数组
        minZoom: 8,                                                                                         // 最小缩放等级
        maxZoom: 18                                                                                         // 最大缩放等级

    } ),

    // 覆盖物数据“供应商”数组
    overlayProviders: [

        // 腾讯路网数据“供应商”
        new DefaultImageryProvider( {

            url: 'https://{subdomain}.map.gtimg.com/tile?z={z}&x={x}&y={y}&styleid=2&version=821',  // 数据服务地址
            flipY: true,                                                                            // 由于腾讯地图瓦片坐标原点在左下角,需要反转Y坐标
            subdomains: [ 'rt0', 'rt1', 'rt2', 'rt3' ],                                             // 子域名数组
            minZoom: 8,                                                                             // 最小缩放等级
            maxZoom: 18                                                                             // 最大缩放等级

        } ),
        // 调试数据“供应商”,用于真渲染片信息
        //new DebugImageryProvider()

    ],

    // 地形数据“供应商”,可选
    // terrainProvider: new TerrainProvider()

} );
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

# 地图边界裁剪

在构建瓦片地图时如果开启地图边界裁剪功能(即将clipping设置为true)。如果指定了裁剪边界(即clippingBounds属性不为空)渲染时会使用该边界进行裁剪,如果未指定则会使用地图范围进行裁剪。裁剪边界由typebounds两部分数据组成,如下所示:

{
    type: string,
    bounds: (number[] | Vector2)[][]
}
1
2
3
4

🌏 type,边界坐标类型,可选 Geographic(经纬度坐标)、Geodetic(地测坐标)、Mercator(墨卡托投影坐标);

🌏 bounds,边界数组,支持多条边界但不支持带孔洞的边界。

// 构建瓦片地图
const mapView = new MapView( engine, {

    ......,

    clipping: true,
    clippingBounds: {

        type: 'Geographic',
        bounds: [ [

            [117.348611, 40.581141],
            [117.389879, 40.561593],
            [117.429915, 40.576141],
            [117.412669, 40.605226],
            ......,
            [117.348611, 40.581141]

        ] ]

    },

    ......

} );
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

提示

瓦片地图初始化参数,详见MapViewParameters

注意

开启地图边界裁剪功能,需要在初始化渲染器时开启模板缓冲,否则边界裁剪不会生效,如下所示:

import { Engine } from '@tx3d/core';

const engine = new Engine( {

    sceneRenderer: {

        stencil: true // 开启模板缓冲

    }

} );
1
2
3
4
5
6
7
8
9
10
11

注意

影像数据、覆盖物数据、地形数据的坐标系需要一致。

# 瓦片地图属性

🌏 visible 可见性控制

// 获取瓦片地图可见性
const visible = mapView.visible;

// 设置瓦片地图可见性
mapView.visible = false;
1
2
3
4
5

🌏 opacity 透明度

// 获取瓦片地图透明度
const opacity = mapView.opacity;

// 设置瓦片地图透明度
mapView.opacity = 0.5;
1
2
3
4
5

🌏 renderOrder 渲染顺序

import { RenderOrder } from '@tx3d/core';

// 获取瓦片地图渲染顺序
const renderOrder = mapView.renderOrder;

// 设置瓦片地图渲染顺序
mapView.renderOrder = RenderOrder.Default - 1;
1
2
3
4
5
6
7

# 瓦片地图接口

🌏 refresh 刷新瓦片地图

// 刷新瓦片地图
mapView.refresh();
1
2

提示

刷新瓦片地图时会先销毁当前瓦片地图,然后重新创建,一般在数据供应商发生改变后调用。

🌏 destroy 销毁瓦片地图

// 销毁瓦片地图
mapView.destroy();
1
2
Last Updated: 12/8/2023, 10:10:33 AM