# 从 v1 升级到 v2

在 aimap.gl 从 v1 升级到 v2 的过程中,除了带来了很多新功能,也修改了一些旧接口的使用方式,如果您试图升级项目中所使用到的 aimap.gl,您可以查阅下表,来确定项目中所使用的各项功能是否需要修改以及如何修改。

# 预定义图层的使用方式改变

v1 中的预定义图层在 v2 中将以图致通用图层服务的形式提供,开发者可以在地图初始化时或者程序运行中进行使用。具体的使用方式可以参考如何使用图致服务

# 复合图层的创建参数调整

为了统一不同图层间的创建参数的差异,以及为了考虑到将要引入的图致服务,v2 对复合图层的定义进行了一定程度的修改,放弃了 v1 中的嵌套写法。复合图层并非某个特定的图层,而是在二维可视化中,各个图层的创建参数,都基于此理念来设计的。

大多数情况下,图层的数据源单一,样式也比较单一,开发者可以用单图层模式进行创建:

var building = new aimap.VectorLayer({
    id: 'indoor-layers',
    data: 'https://api.newayz.com/maps/tilestream/v1/layers/onemap-indoor-20211110/tiles/{z}/{x}/{y}',
    dataLayer: 'shop_wall',
    dataType: 'vector',
    minZoom: 15,
    maxZoom: 22,
    style: {
        'extrusion-color': '#EEEEEE',
        'extrusion-base': 0,
        'extrusion-height': 3,
    },
    filter: ['==', ['get', 'elevation'], 0]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14

但是,当开发者需要对多个数据源进行可视化时,开发者可以选择创建多个图层,也可以选创建一个图层,方便进行统一的管理,也能节约系统资源。

// 创建 2 个图层
var building1 = new aimap.VectorLayer({
    id: 'shop_wall',
    data: 'https://api.newayz.com/maps/tilestream/v1/layers/onemap-indoor-20211110/tiles/{z}/{x}/{y}',
    dataLayer: 'shop_wall',
    dataType: 'vector',
    style: {
        'extrusion-color': '#EEEEEE',
        'extrusion-base': 0,
        'extrusion-height': 3,
    },
    filter: ['==', ['get', 'elevation'], 0],
    map,
});

var building2 = new aimap.VectorLayer({
    id: 'shop_floor',
    data: 'https://api.newayz.com/maps/tilestream/v1/layers/onemap-indoor-20211110/tiles/{z}/{x}/{y}',
    dataLayer: 'shop_floor',
    dataType: 'vector',
    style: {
        'extrusion-color': '#FFFFFF',
        'extrusion-base': 0,
        'extrusion-height': 1,
    },
    filter: ['>=', ['get', 'elevation'], 0],
    map,
});


// 创建一个复合图层,等同于上面创建的 2 个图层
var building = new aimap.VectorLayer({
    id: 'indoor-layers',
    layers: [{
        name: 'shop_wall',
        dataId: 'indoor',
        data: 'https://api.newayz.com/maps/tilestream/v1/layers/onemap-indoor-20211110/tiles/{z}/{x}/{y}',
        dataLayer: 'shop_wall',
        dataType: 'vector',
        style: {
            'extrusion-color': '#EEEEEE',
            'extrusion-base': 0,
            'extrusion-height': 3,
        },
        filter: ['==', ['get', 'elevation'], 0]
    }, {
        name: 'shop_floor',
        dataId: 'indoor',
        dataLayer: 'shop_floor',
        dataType: 'vector',
        style: {
            'extrusion-color': '#FFFFFF',
            'extrusion-base': 0,
            'extrusion-height': 1
        },
        filter: ['>=', ['get', 'elevation'], 0]
    }],
    map,
});
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

为了能够让图层的 blinkhighlight效果支持更加丰富的参数,v2 对这两个接口的参数做了调整,参考示例:

// v1
var massMarkerLayer = new aimap.MassMarkerLayer({...});
massMarkerLayer.blink(['==', 'id', 1]);

// v2
var massMarkerLayer = new aimap.MassMarkerLayer({...});
massMarkerLayer.blink({
    filter: ['==', 'id', 1]
});
1
2
3
4
5
6
7
8
9

具体的新增参数,可参考二维可视化相关的图层文档以及图层规格中的接口规格

# 图层顺序指定方式改变

在 v1 中,开发者可以使用 beforeId来调整图层顺序,但是开发者在创建图层时,往往并不知道其他图层的存在。所以,v2 中重新设计了图层顺序的相关方法。开发者可以通过 zIndex 来指定图层的层级,zIndex 的概念与 CSS 中z-index类似,zIndex数值大的图层将会高于zIndex数值小的图层。更多关于 zIndex 的使用方法,可以参考其他章节。

# 不再集成地理相关的计算方法

v2 中将不再集成地理相关的计算方法,如需使用,可以自行引入turf.js相关的包来使用。

最后更新于: 11/15/2021, 4:47:23 PM