# 从 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
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
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
# blink,highlight 接口的参数调整
为了能够让图层的 blink
,highlight
效果支持更加丰富的参数,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
2
3
4
5
6
7
8
9
具体的新增参数,可参考二维可视化相关的图层文档以及图层规格中的接口规格。
# 图层顺序指定方式改变
在 v1 中,开发者可以使用 beforeId
来调整图层顺序,但是开发者在创建图层时,往往并不知道其他图层的存在。所以,v2 中重新设计了图层顺序的相关方法。开发者可以通过 zIndex
来指定图层的层级,zIndex
的概念与 CSS 中z-index
类似,zIndex
数值大的图层将会高于zIndex
数值小的图层。更多关于 zIndex
的使用方法,可以参考其他章节。
# 不再集成地理相关的计算方法
v2 中将不再集成地理相关的计算方法,如需使用,可以自行引入turf.js
相关的包来使用。