# 3.1 图层数据规范(Data)
TIP
数据图层支持多种数据格式
Data = SimpleFeature
| GeoJSONFeature
| GeoJSONFeatureCollection
| Array<SimpleFeature>
| Array<GeoJSONFeature>
| LayeredData
2
3
4
5
6
# 3.1.1 SimpleFeature
TIP
简易对象是对GeoJSON做了简化处理
字段名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
coordinates | Array<number> | Array<Array<number>> | Array<Array<Array<number>>> | 是 | 坐标数据 点:[经度,纬度] | [经度,纬度,高度] 线: [[经度,纬度],[经度,纬度]] 面: [[[经度,纬度],[经度,纬度],[经度,纬度]]] |
spatialReference | string | 否 | 单个对象的坐标系:bd09 ,wgs84 ,cgcs2000 ,gcj02 ,默认从外部继承 |
id | string | 否 | 对象id字段 |
name | string | 否 | 对象名称,可以显示 |
height | number | 否 | 对象坐标的基准高度(单位:米) |
value | any | 否 | 对象的值字段,可以存放用户指定的数值 |
count | number | 否 | 对象的计数字段,一般热力图的数据需要该字段 |
用户自定义的Field | 自定义类型 | 否 |
示例:
{
name:"测试点",
id:"12345",
value: 32,
coordinates:[132.12,32.12]
}
2
3
4
5
6
# 3.1.2 LayeredData
TIP
不同类型的数据,可以一次提供不同的数据图层。
字段名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
图层名 | Data | 是 | 图层名不能为coordinates ,数据类型为Data类型 |
类型示例:
{
layerName1: Data,
layerName2: Data
}
2
3
4
示例:
{
places: [{
id:"12345",
value: 32,
coordinates:[132.12,32.12]
},{
id:"67890",
value: 12,
coordinates:[132.12,32.12]
}],
areas: [{
id:"1",
count: 32,
coordinates:[[[132.12,32.12],[132.12,32.12],[132.12,32.12],[132.12,32.12]]]
},{
id:"2",
count: 100,
coordinates:[[[132.12,32.12],[132.12,32.12],[132.12,32.12],[132.12,32.12]]]
}]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3.1.3 geojson格式
TIP
全部详细规范可参考网站:https://www.oschina.net/translate/geojson-spec?cmp (opens new window)
features:数组对象,可按结构自由增加点数,每个对象包含了类型说明、空间位置定义、属性定义。
以下示例为点数据存储格式
{
"type":"FeatureCollection", //必填,不可改
"crs":"gcj02", //可选,单个对象的坐标系:`bd09`,`wgs84`,`cgcs2000`,`gcj02`
"features": [{
"type":"Feature", //必填,不可改
"geometry": {
"type":"Point", //必填,不可改
"coordinates":[121.527733,31.231577] //必填,可修改
},
"properties": { //可选,属性信息可自由定义,符合json结构即可
"type":"安全隐患",
"address":"浦东新区福山路108弄",
"info":"人行分隔设施破损,有安全隐患",
"findTime":"2020/04/18 09:13:00",
"fixTime":"2020/04/19 11:23:00",
"status":"已处置",
"timestamp":1590378046679
}
},{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[121.526228,31.231994]
},
"properties":{
"type":"暴露垃圾",
"address":"浦东新区商城路1028弄",
"info":"垃圾随地乱丢",
"findTime":"2019/09/19 08:46:00",
"fixTime":"2019/09/22 16:56:00",
"status":"已处置",
"timestamp":1590378050747
}
}]
}
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
# 3.3 预定义图层列表
序号 | 图层ID | 图层索引 | 图层类型 | 图层说明 |
---|---|---|---|---|
1 | boundary-district-pudong | 30 | 多边形 | 浦东区县图层 |
2 | boundary-township-pudong | 31 | 多边形 | 浦东区街镇图层 |
3 | boundary-neighborhood-pudong | 32 | 多边形 | 浦东区村居图层 |
4 | boundary-community-pudong | 33 | 多边形 | 浦东区小区图层 |
5 | boundary-admin-center-pudong | 34 | 多边形 | 上海市浦东新区行政管理中心边界图层 |
6 | building-pudong | 36 | 多边形 | 浦东区建筑物图层 |
7 | route-road-pudong | 40 | 线 | 浦东区地面道路图层 |
8 | route-highway-pudong | 41 | 线 | 浦东区高速道路图层 |
9 | route-clean-road-pudong | 42 | 线 | 上海市浦东新区清扫作业道路图层 |
10 | route-patrol-road-pudong | 43 | 线 | 上海市浦东新区巡查作业道路图层 |
11 | heatmap-footfall-pudong | 50 | 热力图 | 浦东区客流热力图层 |
# 3.4 Style配置
TIP
风格规范主要分成如下几个部分
fill
区域填充类配置项,应用于多边形(Polygon)类型数据line
线类配置项,应用与折线(LineString)类型数据text
文字配置项icon
图标配置项,支持png、svg等格式图片circle
圆圈配置项extrusion
平面拉伸配置项heatmap
热力图配置项
# 3.4.1 填充(Fill)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
fill-color | string | expressions | 黑色 | 多边形内填充颜色 |
fill-opacity | number | expressions | 1 | 透明度 |
fill-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.2 线(Line)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
line-color | string | expressions | 黑色 | 颜色 |
line-width | number | expressions | 1 | 线宽 ,像素 |
line-opacity | number | expressions | 1 | 透明度 |
line-join | string | 'miter' | 线段与线段连接类型,一下三种之一:bevel ,round ,miter |
line-blur | number | expressions | 0 | 线的模糊度,单位为:像素 |
line-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.3 文字(Text)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
text-allow-overlap | boolean | false | 是否允许文字重叠 |
text-color | string | expressions | "#000000" | 文字颜色 |
text-anchor | string | "center" | 文字锚点 |
text-field | string | "" | 文字内容获取原始数据的字段名称 |
text-font | Array<string> | ['Microsoft YaHei Regular'] | 文字字体,['Microsoft YaHei Regular'] |
text-halo-blur | number | expressions | 0 | 文字底的模糊度 |
text-halo-color | string | expressions | "rgba(0, 0, 0, 0)" | 文字底的颜色 |
text-halo-width | number | expressions | 0 | 文字底的宽度 |
text-line-height | number | expressions | 1.2 | 文字单行高度 |
text-opacity | number | expressions | 1 | 文字透明度 0~1 |
text-size | number | expressions | 16 | 文字大小 |
text-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
text-to-canvas | boolean | false | 设为true以后,text将仅按照text-field,text-size,text-color,text-offset的属性,绘制在icon-image中,默认位置垂直居中靠左,其他与text相关的参数将失效 |
# 3.4.4 图标(ICON)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
icon-allow-overlap | boolean | false | 是否允许图标重叠 |
icon-anchor | string | "center" | ICON锚点类型 |
icon-image | string | ICON的图片名称,在images中定义的ID | |
icon-opacity | number | expressions | 1 | 透明度 |
icon-size | number | expressions | 1 | 和原始ICON的图片的比率 |
icon-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.5 圆(Circle)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
circle-blur | string | expressions | 0 | 圆填充的模糊度 |
circle-color | string | expressions | 黑色 | 圆填充的颜色 |
circle-opacity | string | expressions | 1 | 圆填充的透明度 |
circle-stroke-color | string | expressions | "#000000" | 圆边框的颜色 |
circle-stroke-opacity | number | expressions | 1 | 圆边框的透明度 |
circle-stroke-width | number | expressions | 0 | 圆边框的线宽 |
circle-radius | number | expressions | 5 | 圆圈半径,单位为像素 |
circle-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.6 热力(heatmap)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
heatmap-color | color | expressions | ["interpolate",["linear"], ["heatmap-density"], 0,"rgba(0, 0, 255, 0)", 0.1,"royalblue", 0.3,"cyan", 0.5,"lime",0.7,"yellow", 1,"red"] | 根据像素在热图中的密度值定义颜色 |
heatmap-intensity | number | expressions | 1 | 强度。主要用于根据缩放级别调整热图 |
heatmap-weight | number | expressions | 1 | 权重。衡量单个点对热图贡献多少的度量,值为10等于在同一位置具有10个权重点1 |
heatmap-radius | number | expressions | 30 | 一个热图点的影响半径(以像素为单位),值增加会使热图更平滑,但细节不那么丰富 |
heatmap-opacity | number | expressions | 1 | 绘制热图图层的全局不透明度。位于[0, 1]区间内 |
heatmap-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.7 拉伸(extrusion)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
extrusion-base | number | expressions | 0 | 海拔 |
extrusion-color | string | expressions | 黑色 | 填充的颜色 |
extrusion-height | number | expressions | 0 | 拉伸高度,单位为米 |
extrusion-opacity | number | expressions | 1 | 填充的透明度 |
extrusion-pattern | string | 填充图片名称,在images中定义的ID,若配置该参数,则会覆盖extrusion-color | |
extrusion-visibility | string | 'visible' | 默认显示,visible 为显示,none 为不显示 |
# 3.4.8 图像(Image)配置
style项 | 类型 | 默认值 | 说明 |
---|---|---|---|
raster-opacity | number | 1 | 图像透明度,范围[0, 1] |
# 3.4.9 不同数据类型配置
数据类型 | 支持的配置项 |
---|---|
点 | circle 在点上显示圆圈 icon 在点上显示图标 text 在点上显示文字 |
线(直线) | line 画线 text 在线上显示文字 |
面(多边形) | fill 填充多边形 line 绘制多边形的边界 text 在面的中心点上显示文本 |
热力 | heatmap |
# 3.5 坐标系支持
TIP
当前坐标系声明功能已支持 自定义点、线、圆、面、热力、迁徙图、轨迹
接口。
当前sdk中城建坐标转换仅限于政务内网环境下正常使用。
功能描述:
图层的初始化支持多种坐标系声明,地图默认使用gcj02(即火星坐标系也叫高德坐标系),若声明不为gcj02,sdk会在内部将所传经纬度转换为gcj02。
参数:
字段名 | 类型 | 是否必须 | 默认值 | 说明 |
---|---|---|---|---|
spatialReference | string | 否 | gcj02 | 坐标系类型,分:gps坐标系——wgs84 、高德坐标系——gcj02 、百度坐标系——bd09 、城建坐标系——cgcs2000 。 |
示例:
// 自定义多边形
new aimap.Polygon({
data: {
coordinates: [[[121.612846, 31.205494],[121.612946, 31.205494],[121.612946, 31.204494],[121.612846, 31.204494]]]
},
spatialReference: 'gcj02', //坐标系声明
style: {
'fill-color': '#ff0000'
},
map
});
2
3
4
5
6
7
8
9
10
11
# 3.6 配置中的表达式应用
TIP
在配置中,对于颜色、大小、透明度都是可以通过表达式,根据数据中的字段灵活地配置相应的风格。
# 3.6.1 match
表达式
选择标签值与输入值匹配的输出,如果未找到匹配,则选择默认值。input
可以是任何表达式(例如。“building_type”
, ["join-field", "building_type"]
。每个标签必须是:
单个数值,或者字符串值;或一个数值、字符串数组。它的值必须是所有的字符串或数字(例如:[100, 101]
或["c", "b"]
)。如果数组中的任何值匹配可以与input
匹配,则输出相应的output
。
每个标签必须是唯一的,回退值是必填的。如果输入类型与标签类型不匹配,则结果将是回退值。
表达式说明
["match",
input: number,
[label_1, output_1], // case input == label_1 return output_1
[label_2, output_2], ... // case input == label_2 return output_2
[label_n, output_n], // case input == label_n return output_n
default_output // else return default_output
]: OutputType
2
3
4
5
6
7
表达式示例-1
["match",
"value",
["str-1", 100],
["str-2", 200],
300
]
2
3
4
5
6
表达式示例-2
["match",
"value",
[["str-1-1", "str-1-2"], 100],
[["str-2-1", "str-2-2"], 200],
300
]
2
3
4
5
6
# 3.6.2 step
表达式
通过计算由输入和输出值(“step")定义的分段常数函数,产生离散的、阶梯式的结果。相当于多个if else
组成的语句。 ‘input’可以是任何数字表达式(例如,"population"
或者 ["join-field", "population"]
)。stop_input
必须是严格升序的数字。
["step",
input: number,
[stop_input_1, stop_output_1], // if (input < stop_input_1) return stop_output_1
[stop_input_2, stop_output_2], ... // else if (input < stop_input_2) return stop_output_2
[stop_input_n, stop_output_n], // else if (input < stop_input_n) return stop_output_n
stop_output_others // else return stop_output_n
]: OutputType
2
3
4
5
6
7
表达式示例
["step",
"value",
[10, 100],
[20, 200],
[30, 300],
400
]
2
3
4
5
6
7
# 3.6.3 zoom
表达式
返回地图当前的zoom
层级,一般情况下为 1~20之间。
["zoom"]
# 3.6.4 get-join
表达式
获取与用户数据join
的数据对象的指定字段。如果数据集合中存在找不到数据的情况,可以给定一个默认值。
["get-join", "field-name"]
["get-join", "field-name", default_value]
# 3.6.5 case
表达式
["case",
[condition_1, output_1], // case condition_1 return output_1
[condition_2, output_2], ... // case condition_2 return output_2
[condition_n, output_n], // case condition_n return output_n
default_output // else return default_output
]: OutputType
2
3
4
5
6
# 3.6.6 all
表达式
只有输入的值里有所有的值为true
,则表达式返回true
,只要存在一个是false
时,就返回false
。
["all", boolean, boolean]: boolean
["all", boolean, boolean, ...]: boolean
# 3.6.7 any
表达式
只要输入的值里有任何一个为true
,则表达式返回true
,只有都是false
时,才返回false
。
["any", boolean, boolean]: boolean
["any", boolean, boolean, ...]: boolean
# 3.6.8 in
表达式
检测指定的值是否在一个数组内,或者都是字符串时,是否是其中的字串。
["in",
keyword, // 类型可以是:boolean, string, 或者 number
input // 类型可以是: array or string
]: boolean
2
3
4
示例:
// 判断 township字段的值是否是"张江镇", "唐镇"其中之一
["in", "township", "张江镇", "唐镇"]
2
# 3.6.9 <
表达式
只有当value_1
小于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
["<", value_1, value_2]: boolean
# 3.6.10 <=
表达式
只有当value_1
小于等于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
["<=", value_1, value_2]: boolean
# 3.6.11 >
表达式
只有当value_1
大于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
[">", value_1, value_2]: boolean
# 3.6.12 >=
表达式
只有当value_1
大于等于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
[">=", value_1, value_2]: boolean
# 3.6.13 ==
表达式
只有当value_1
等于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
["==", value_1, value_2]: boolean
# 3.6.14 !=
表达式
只有当value_1
不等于value_2
时,表达式返回true
,否则返回false
,输入的value
值只能是数组或者字符串类型。
["!=", value_1, value_2]: boolean
# 3.6.15 concat
表达式
把所有字符串类型的值连接在一起。
语法
["concat", value_1, value_2, ...]: string