# 3.1 图层数据规范(Data)

TIP

数据图层支持多种数据格式

Data = SimpleFeature
     | GeoJSONFeature
     | GeoJSONFeatureCollection
     | Array<SimpleFeature>
     | Array<GeoJSONFeature>
     | LayeredData
1
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]
}
1
2
3
4
5
6

# 3.1.2 LayeredData

TIP

不同类型的数据,可以一次提供不同的数据图层。

字段名 类型 是否必须 说明
图层名 Data 图层名不能为coordinates,数据类型为Data类型

类型示例:

{
	layerName1: Data,
	layerName2: Data
}
1
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]]]
    }]
}
1
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
        }
    }]
}
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

# 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

风格规范主要分成如下几个部分

  1. fill 区域填充类配置项,应用于多边形(Polygon)类型数据
  2. line 线类配置项,应用与折线(LineString)类型数据
  3. text 文字配置项
  4. icon 图标配置项,支持png、svg等格式图片
  5. circle 圆圈配置项
  6. extrusion 平面拉伸配置项
  7. 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
});
1
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
1
2
3
4
5
6
7

表达式示例-1

["match",
"value",
["str-1", 100],
["str-2", 200],
300
]
1
2
3
4
5
6

表达式示例-2

["match",
"value",
[["str-1-1", "str-1-2"], 100],
[["str-2-1", "str-2-2"], 200],
300
]
1
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
1
2
3
4
5
6
7

表达式示例

["step",
"value",
[10, 100],
[20, 200],
[30, 300],
400
]
1
2
3
4
5
6
7

# 3.6.3 zoom表达式

返回地图当前的zoom层级,一般情况下为 1~20之间。

["zoom"]
1

# 3.6.4 get-join表达式

获取与用户数据join的数据对象的指定字段。如果数据集合中存在找不到数据的情况,可以给定一个默认值。

["get-join", "field-name"]
1
["get-join", "field-name", default_value]
1

# 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
1
2
3
4
5
6

# 3.6.6 all表达式

只有输入的值里有所有的值为true,则表达式返回true,只要存在一个是false时,就返回false

["all", boolean, boolean]: boolean
1
["all", boolean, boolean, ...]: boolean
1

# 3.6.7 any表达式

只要输入的值里有任何一个为true,则表达式返回true,只有都是false时,才返回false

["any", boolean, boolean]: boolean
1
["any", boolean, boolean, ...]: boolean
1

# 3.6.8 in表达式

检测指定的值是否在一个数组内,或者都是字符串时,是否是其中的字串。

["in",
keyword, //  类型可以是:boolean, string, 或者 number
input    //  类型可以是: array or string
]: boolean
1
2
3
4

示例:

// 判断 township字段的值是否是"张江镇", "唐镇"其中之一
["in", "township", "张江镇", "唐镇"]
1
2

# 3.6.9 <表达式

只有当value_1小于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

["<", value_1, value_2]: boolean
1

# 3.6.10 <=表达式

只有当value_1小于等于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

["<=", value_1, value_2]: boolean
1

# 3.6.11 >表达式

只有当value_1大于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

[">", value_1, value_2]: boolean
1

# 3.6.12 >=表达式

只有当value_1大于等于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

[">=", value_1, value_2]: boolean
1

# 3.6.13 ==表达式

只有当value_1等于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

["==", value_1, value_2]: boolean
1

# 3.6.14 !=表达式

只有当value_1不等于value_2 时,表达式返回true,否则返回false,输入的value值只能是数组或者字符串类型。

["!=", value_1, value_2]: boolean
1

# 3.6.15 concat表达式

把所有字符串类型的值连接在一起。

语法

["concat", value_1, value_2, ...]: string
1
Last Updated: 9/22/2021, 3:48:28 PM