# 矢量瓦片

# 矢量瓦片产生背景

随着大数据技术的发展,人们对电子地图的快速共享需求也越来越强烈。传统电子地图共享时,通常会通过瓦片裁剪工具获取栅格瓦片。相对于其他技术,栅格瓦片底图有其优越性,例如有效减少了传输数据体积,多级缩放等。然而,栅格瓦片底图也有一些短处,缺乏灵活性、实时性,数据完整性受损是比较突出的问题,这正是栅格数据的问题:

  • 缺乏灵活性。栅格瓦片完成后,已经保存为图片格式,样式不可修改。若要多种栅格底图,需裁剪多份栅格瓦片底图;
  • 缺乏实时性。由于栅格瓦片已保存为图片格式,当现实世界地物有变化时,不能实时更新,只能重新裁剪栅格瓦片;
  • 丢失属性信息。栅格瓦片没有属性信息,若要查询图片的多边形的属性,需要到服务器重新请求。

基于栅格瓦片底图的劣势,MapGIS 可支持矢量瓦片底图。矢量瓦片针对矢量电子地图,按照一定的标准和技术将其保存为多种比例尺的矢量分块数据,在前端显示电子地图时,可直接调用矢量分块进行绘制。

  • 可保留属性信息,在客户端进行查询时,无需再次请求服务器;
  • 采用分块编码模式,客户端获取时只返回请求区域和相应级别的矢量瓦片底图,且采用实时绘制矢量模式,绘制效率更高;
  • 矢量瓦片分辨率高达4096*4096,是栅格瓦片的16倍,可保证缩放过程中的细节高度还原,且满足高分屏绘制需求;
  • 样式可以改变和定制,矢量切片可以在客户端渲染,可以按照用户赋予的样式渲染。如导航地图有白天和黑夜两种模式,只需共用一份矢量瓦片底图,利用两套样式进行渲染即可;
  • 客户端显示矢量瓦片底图时,可以通过属性过滤条件可以任意过滤筛选图元,实现个性化定制;
  • 客户端显示矢量瓦片底图时,可以编辑底图中每一个矢量图层的可见状态,调整矢量层的叠加压盖顺序,修改矢量图层的颜色、大小等显示样式。

# 矢量瓦片分块规则

MapGIS生成矢量瓦片时,是按照一定的规则将矢量地图裁剪为若干行列的矢量切片数据。不同的空间参考系下地图瓦片的分块规则不同,同一空间参考系下矢量瓦片的分块规则相同。目前行业内最常用的两种分块规则如下:

# 地理坐标系

地理坐标系下,经度从-180度到+180度;纬度从-90度到+90度,即分块范围覆盖整个地球。具体分块规则如下图所示:

其中,第0级分成1行2列,每个瓦片尺寸为180度×180度;第1级对第0级的每个瓦片进行4叉划分,每个瓦片尺寸为90度×90度;以此类推。

矢量瓦片以左上角(-180°,90°)为编码原点,垂直向右(向东)、向下(向南)对瓦片进行行列编码,序号从0开始。如,第0级2张矢量瓦片为(0,0)、(0,1);第1级8张瓦片的编码分别为(0,0)、(0,1)、(0,2)、(0,3)、(1,0)、(1,1)、(1,2)、(1,3);以此类推。

提示:

各级地图瓦片编码的第一个参数为行号,第二个参数为列号。

显示比例尺计算方法如下:

地图显示比例=1:地面分辨率*屏幕分辨率/(0.0254 米/英寸)

其中:地面分辨率= [2π地球长半径(米)]/(256*2Level像素)

Level 表示比例尺的级别,最小为0;屏幕分辨率取值为96 dpi;地球长半径取2000 国家大地坐标系规定参数,为6378137 米。

以第0级为例,世界地图刚好填充满两张图片,可计算:

地面分辨率= [2*π*地球长半径(米)]/(256*2level像素)=(2*π*6378137)/(256*2)≈78271.5170米/像素
地图显示比例尺=1:地面分辨率*屏幕分辨率/(0.0254 米/英寸)=1:78271.5170*96/(0.0254)≈1:295829355.45。

以此类推,各级分辨率及比例尺信息如下表所示:

级别 行瓦片数*列瓦片数 256*256 地面分辨率 显示比例尺
0 1*2 78271.5170 1:295829355.45
1 2*4 39135.7585 1:147914677.73
2 4*8 19567.8792 1:73957338.86
3 8*16 9783.9396 1:36978669.43
4 16*32 4891.9698 1:18489334.72
5 32*64 2445.9849 1:9244667.36
6 64*128 1222.9925 1:4622333.68
7 128*256 611.4962 1:2311166.84
8 256*512 305.7481 1:1155583.42
9 512*1024 152.8741 1:577791.71
10 1024*2048 76.4370 1:288895.85
11 2048*4096 38.2185 1:144447.93
12 4096*8192 19.1093 1:72223.96
13 8192*16384 9.5546 1:36111.98
14 16384*32768 4.7773 1:18055.99
15 32768*65536 2.3887 1:9028.00
16 65536*131072 1.1943 1:4514.00
17 131072*262144 0.5972 1:2257.00
18 262144*524288 0.2986 1:1128.50
19 524288*1048576 0.1493 1:564.25

# 墨卡托投影

墨卡托投影下,整个地球范围会投影为一个正方形,x/y方向坐标值从-20037508.34到20037508.34。具体分块规则如下图所示:

矢量瓦片以左上角(-20037508.34,20037508.34)为编码原点,垂直向右(向东)、向下(向南)对瓦片进行行列编码,序号从0开始。其中,第0级分成1行1列;第1级对第0级的每个瓦片进行4叉划分;以此类推。如第0级1张矢量瓦片为(0,0);第1级4张瓦片的编码分别为(0,0)、(0,1)、(1,0)、(1,1);以此类推。

提示:

各级地图瓦片编码的第一个参数为行号,第二个参数为列号。

显示比例尺计算方法如下:

地图显示比例=1:地面分辨率*屏幕分辨率/(0.0254 米/英寸)

其中:地面分辨率为单个像素代表的实地距离,即地面分辨率=世界范围距离/(256*2Level)

Level 表示比例尺的级别,最小为0;屏幕分辨率取值为96 dpi;世界范围距离为Xmax-Xmin≈40075016.69米

以第0级为例,世界地图刚好填充满一张图片,可计算:

地面分辨率=世界范围距离/(256\*2Level)=40075016.69/(256\*20)≈156543.0339米/像素
地图显示比例尺=1:地面分辨率*屏幕分辨率/(0.0254 米/英寸)=1:156543.0339*96/(0.0254)≈1:591658710.91

以此类推,各级分辨率及比例尺信息如下表所示:

级别 行瓦片数*列瓦片数 (256*256) 地面分辨率 显示比例尺
0 1*1 156543.0339 1:591658710.91
1 2*2 78271.5170 1:295829355.45
2 4*4 39135.7585 1:47914677.73
3 8*8 19567.8792 1:73957338.86
4 16*16 9783.9396 1:36978669.43
5 32*32 4891.9698 1:18489334.72
6 64*64 2445.9849 1:9244667.36
7 128*128 1222.9925 1:4622333.68
8 256*256 611.4962 1:2311166.84
9 512*512 305.7481 1:1155583.42
10 1024*1024 152.8741 1:577791.71
11 2048*2048 76.4370 1:288895.85
12 4096*4096 38.2185 1:144447.93
13 8192*8192 19.1093 1:72223.96
14 16384*16384 9.5546 1:36111.98
15 32768*32768 4.7773 1:18055.99
16 65536*65536 2.3887 1:9028.00
17 131072*131072 1.1943 1:4514.00
18 262144*262144 0.5972 1:2257.00
19 524288*524288 0.2986 1:1128.50

# 矢量瓦片应用流程

MapGIS中矢量瓦片工作流程如下:

  1. 矢量瓦片底图的提供者,按照各类地图的分级显示要求进行配图;
  2. 矢量瓦片底图的提供者,根据配好的地图,生成索引网格;
  3. 矢量瓦片底图的提供者,对地图进行切分,生成并存储矢量瓦片;
  4. 矢量瓦片底图的提供者,通过地图瓦片服务对外提供矢量瓦片底图;
  5. 矢量瓦片底图的使用者,通过访问地图瓦片服务获取所需矢量瓦片底图瓦片;
  6. 矢量瓦片底图的使用者,将获取到的矢量瓦片底图瓦片在客户端按级别进行实时渲染绘制显示;
  7. 矢量瓦片底图的使用者,可以在客户端,调整地图样式。

# 矢量瓦片裁剪

# 功能说明

矢量瓦片是包含多个比例尺级别的矢量切片数据。相对于栅格瓦片,矢量瓦片能够适应高分辨的显示设备需求,并可以在前端实时改变显示样式。

(一)电子地图配图

MapGIS矢量瓦片裁剪时,可直接保留地图文档的配图信息,包括数据图层的组织结构、可见显示比例尺范围、显示样式等信息。

用户可在MapGIS 桌面端先配置地图的显示效果,裁剪为矢量瓦片后,矢量瓦片中包含了地图配图效果。同时,裁剪为矢量瓦片后,用户可在Web端展示矢量瓦片时配置地图显示效果。

提示:

1. 矢量瓦片裁剪结果还是矢量数据,因此配图应尽量保证每一个显示比例尺下数据量不会太大。

2. MapGIS矢量瓦片可继承原始地图的大多数配图效果,只有少数特殊符号或配图效果是无法支持的。比如当道路的"自绘驱动"显示效果不支持;河流线采用渐变线样式时也不支持。

(二)创建索引

MapGIS 矢量瓦片裁剪支持“全裁图模式”和“索引裁图模式”两种方式。

(1)全裁图模式

全裁图模式下,矢量瓦片网格划分应完全参照 “矢量瓦片分块规则” 章节。电子地图覆盖的范围内,所有的网格都应生成一张矢量瓦片文件,网格分布均匀。

(2)索引裁图模式

索引网格的划分规则应完全参照 “矢量瓦片分块规则” 章节,在划分网格时,会统计每一个网格内源电子地图的数据量,当数据量小于阈值时,该网格在下一级别不再被四叉划分。因此,索引网格的构建与地图数据量有关,数据量越密的区域,索引网格也越密。

提示:

"索引裁图模式"裁剪的网格数量会比"全裁图模式"少,因此裁剪效率会高。但是"索引裁图模式"要求前端显示时进行处理,否则可能导致部分区域显示为空。目前MapGIS IGServer仅支持"全裁图模式"矢量瓦片的显示。

# 操作说明

1. 打开已配图完成的矢量地图,启动"工具"面板->"矢量瓦片裁剪"功能,弹出创建矢量瓦片的对话框。

  • 【选择地图】:可通过下拉框选择当前文档中的电子地图,此地图名称为矢量瓦片存储结果文件夹名称。

  • 【新建|选择 索引区要素类】:设置新建的瓦片索引区的存放目录或选择用户已有索引区。

  • 【瓦片信息】:可以根据需求手动输入原点坐标、图片参数、裁剪级别及比例尺信息。

  • 【裁图模式】:支持全裁图模式和智能裁图模式,可参考"创建索引"。

  • 【切片策略】:包括经纬度、Web墨卡托、高斯克吕格和自定义三种方式:

    • 经纬度:目前Web地图常用的一种裁图模式。要求地图的空间参照系必须为地理坐标系,否则无法使用此裁剪策略。裁剪参数如下图所示:

    • Web墨卡托:目前Web地图常用的一种裁图模式。要求地图的空间参照系必须为Web墨卡托投影坐标系,否则无法使用此裁剪策略。裁剪参数如下图所示:

    • 高斯克吕格:针对高斯克吕格投影坐标系的一种自定义裁剪模式,要求地图的空间参照系必须为高斯克吕格投影坐标系。默认参数如下所示,用户也可自定义:

    • 自定义:自定义裁图模式,对地图的空间参照系没有要求,用户可自定义各裁剪参数:

      • 原点坐标:设置裁剪地图文档时,第一个裁剪网格的原点。用户可以在“原点坐标”栏中,输入裁剪网格的左上角的XY值,来确定原点坐标。默认原点为(0,0)
      • 图片参数:设置结果瓦片高宽,单位为像素;
      • 保存:将裁剪参数信息保存为xml文件;
      • 导入:导入保存的xml裁剪参数信息;
      • 比例尺信息:自定义裁剪比例尺。
  • 【最大顶点数量】:可设置最大顶点数量,生成索引时,会根据该数值来决定是否向下一级划分索引网格;

  • 【最小可见级别/最大可见级别】:设置生成索引区的的最小/最大级别。

提示:

索引区是矢量瓦片裁剪的分块规则,请谨慎选择已有的索引区。如果不确定,建议采用"新建"方式。索引区会影响矢量瓦片的裁剪级别,索引区的级别应包含瓦片级别,索引区级别外的瓦片不会进行裁剪。

2. 点击"下一步",可进行矢量裁图设置:

  • 【输出文件】:设置矢量瓦片结果存储格式,包括如下几种格式:

    • 本地(muvt、vtdf、mbtiles):保存为本地的muvt、vtdf、mbtiles格式,其中mbtiles要求必须为web墨卡托投影坐标系;

提示:

MapGIS 本地瓦片格式*.muvt、*.vtdf、*.mbtiles仅适用于单个客户机使用,不适用于通过共享目录给多个客户机同时使用。若用户希望多个客户机可以使用同一个数据库,建议使用MongoDB或PostgreSQL数据库存储。

-   MongoDB:保存到MongoDB数据库中;
-   PostgreSQL:保存到PostgreSQL数据库中;
-   目录:保存为目录格式,其中矢量瓦片结果采用多级目录文件夹进行管理。
  • 【输出配图文件】:设置地图配图样式json文件的存储路径及名称,默认和原始数据保存在同一个位置;

  • 【最小切片级别/最大切片级别】设置矢量瓦片裁剪级数范围。

  • 【索引区要素类】:选择生成的索引区要素类。若在上一步生成索引区,此处会自动填写。

  • 【高级】:设置裁剪高级参数。矢量瓦片裁剪时,会对原始数据进行抽稀、过滤等操作,保证每一个切片格网内的数据量都不会太大。

    • 参数模版:针对不同数据范围、地图类型,系统提供了如下四种模板,用户可直接使用模板中自带的的裁剪参数信息;

    • 是否全属性保留:勾选时,可保留所有属性字段及值信息。若用户希望在前端进行查询等操作,建议保留属性字段;
    • 结果是否压缩:勾选时,可压缩结果矢量瓦片。

3. 设置完成后,点击"下一步",可进行附加裁剪项设置,设置裁图范围及其他参数

  • 【瓦片裁图范围】:瓦片裁图范围可选择地图范围和自填范围,其中自填范围可通过导入范围和框选范围确定。
  • 【其他参数设置】:若矢量数据的属性字段非常多,用户只希望保留其中几个属性字段,可在此设置全局默认保留字段。

4. 点击"运行",开始进行矢量瓦片裁剪,裁剪完成后,弹框提示裁剪成功。

# 发布/浏览矢量瓦片

# 功能说明

MapGIS 裁剪生成矢量瓦片后,可在MapGIS IGServer中发布矢量瓦片服务,并浏览地图效果。

若矢量瓦片裁剪时包含了地图配图信息,在web端显示,可继承原地图显示效果。

# 操作说明

1. 登录到MapGIS IGServer,启动"服务管理"->"服务发布"->"二维地图服务"->"矢量瓦片服务"功能,进入如下页面:

2. 设置矢量瓦片信息:

  • 【数据源类型】:包括如下三种数据源类型:

    • 矢量瓦片:包括MapGIS矢量瓦片(MUVT、VTDF)、MapGIS矢量瓦片(MongoDB)、MapGIS矢量瓦片(目录格式)、MBTiles四种类型。MapGIS矢量瓦片(MUVT、VTDF)是MapGIS裁剪好的MUVT或VTDF瓦片(格式为*.MUVT/*.VTDF);MapGIS矢量瓦片(MongoDB)是直接存储在MongoDB数据库中的矢量瓦片数据;MapGIS矢量瓦片(目录格式)是以目录格式存储的MapGIS矢量瓦片;MapGIS Tile(MBTILES)是以MBTILES瓦片(格式为*.MBTILES)格式存储的矢量瓦片。

    • 矢量瓦片文件夹:当有多个矢量瓦片文件时,可通过文件夹方式进行批量发布;
    • DataStore MongoDB矢量瓦片:DataStore大数据的MongoDB数据源中存储的栅格瓦片。
  • 【服务名称】:设置当前服务的名称;

  • 【所属文件夹】:设置当前服务的所属文件夹。

3. 单击“发布矢量瓦片”按钮,完成发布瓦片服务的操作。界面会提示发布是否成功,若发布成功,地图与数据服务列表会显示此服务,也可直接单击预览查看服务发布的结果。

# 修改矢量瓦片样式

MapGIS在web端显示矢量瓦片效果时,采用MapboxGL地图显示渲染框架,将数据层划分为background(背景)、circle(点)、line(线)、fill(区)和symbol(标记符号)五种类型,用户可在界面层实时修改地图渲染效果。

# background(背景)

参数名称 参数含义 前提条件 单位 默认值 CSS示例
填充色 背景填充颜色 - - - "background-color": "rgba(221, 92, 92, 1)"
背景模式 背景填充符号的类型。 - - - "background--pattern": "respt_首都"
透明度 填充符号的透明效果,透明度取值为0 到1之间的任意整数,1表示不透明,0表示完全透明。 - - 1 "background-opacity": 1

# circle(点)

参数名称 参数含义 前提条件 单位 默认值 CSS示例
子图颜色 圆符号RGB颜色值 - - "circle-color": "rgba(245, 8, 46, 0.5)"
半径 圆符号半径 - 像素 5 "circle-radius": 10
透明度 点符号填充透明度,1为不透明,0为全透明 - - 1 "circle-opacity": 0.5
模糊化 - - 0 "circle-blur": 0
笔颜色 圆形符号边界RGB颜色 - - "circle-stroke-color":"rgba(230, 13, 13, 1)"
笔宽 圆形符号边界宽度 - 像素 0 "circle-stroke-width": 4
笔颜色透明度 变宽透明度,1为不透明,0为全透明 - - 1 "circle-stroke-opacity": 0.7
节距模式 - - "circle-pitch-scale": "viewport"
平移模式 - - "circle-translate-anchor": "map"
平移 X/Y方向平移量 - 像素 0 "circle-translate": [ 10, 0 ]

# line(线)

参数名称 参数含义 前提条件 单位 默认值 CSS示例
线颜色 线颜色 "line-color": "rgba(211, 12, 43, 1)"
线宽 线宽 像素 1 "line-width": 1,
透明度 线的透明度 1
模糊化 线边界模糊 像素 0 "line-blur": 0
线头 线头类型,可选择圆头、平头和方头 Butt "line-cap": "butt"
拐角 线的拐角类型,可选Bevel、Round和Miter Miter "line-join": "Miter"
斜接限制 自动将拐角类型由miter改成bevel 拐角选择为Miter 2 "line-miter-limit": 2
圆角限制 自动将拐角类型由round改成miter 拐角选择为Round 1.05 "line-round-limit": 1.05
虚线和间隔样式 描述线图层轮廓的虚线和间隔样式,是虚线和间隙值的集合(奇数项为虚线长度;偶数项为间隙长度) 线宽单位 "line-dasharray": [ 6, 3, 3, 3 ]
线偏移 相对原始线偏移量,根据设置的正负数向左右偏移 像素 0 "line-offset": 0
线填充图案 线的填充图案 "line-pattern": "othnt_point"
平移 相对原始线的偏移量 像素 0,0 "line-translate": [ 0, 0 ]
平移模式 选择平移模式为map或viewport 线设置平移 Map "fill-translate-anchor": "map"
间隔宽度 双线的间隔宽度 像素 0 "line-gap-width": 0

# fill(区)

参数名称 参数含义 前提条件 单位 默认值 CSS示例
区填充图案 填充符号的类型。 - - "fill-pattern": "respt_首都"
填充色 填充矢量瓦片区图层的颜色。 - RGB "fill-outline-color": "rgba(221, 92, 92, 1)"
轮廓颜色 填充矢量瓦片区边界的颜色。 - RGB "fill-color": "rgba(190,220,175,1.0)"
透明度 填充符号的透明效果,透明度取值为0 到1之间的任意整数,1表示不透明,0表示完全透明。 - 1 "fill-opacity": 1
抗锯齿 消除区边缘出现凹凸锯齿,使之平滑显示 - true "fill-antialias": true
平移模式 选择平移模式为map或viewport - map "fill-translate-anchor": "viewport"
平移 基于原始位置上,再按照屏幕坐标偏移 - 像素 0,0 "fill-translate": [ 0, 0 ]

# symbol(标记)

参数名称 参数含义 前提条件 单位 默认值 CSS示例
位置 注记模式,有点和线两种 - - point "symbol-placement": "line"
间距 线上重复标记注记的间距?可是为10、0时候不对? 线模式下才可用 像素 250 "symbol-spacing": 100
是否描边 瓦片边缘 - - false "symbol-avoid-edges": true
文本 注记所在属性字段 - - "text-field": "{Name_chn}"
字体 注记的字体 已设置注记文本 - - "text-font": [ "微软雅黑", "微软雅黑" ]
字号 注记大小 已设置注记文本 像素 16 "text-size": 30
文本颜色 注记颜色 已设置注记文本 - - "text-color": "rgba(255, 0, 0, 1)"
文本透明度 注记透明度 已设置注记文本 - 1 "text-opacity": 1
最大宽度 用于文本换行的最大宽度 已设置注记文本 Ems(浏览器字体大小) 10 "text-max-width": 3
文本行高 换行时的行上下间距 已设置注记文本 Ems(浏览器字体大小) 1.2 "text-line-height": 2
字符间距 字符间的行间距 已设置注记文本 Ems(浏览器字体大小) 0 "text-letter-spacing": 1
文本间距 多个文本间距,若小于此间距,会自动进行避让不显示 已设置注记文本 像素 2 "text-padding": 4
文本光环颜色 字体外轮廓颜色 已设置注记文本 - - "text-halo-color": "rgba(0, 0, 0, 1)"
文本光环宽度 字体外轮廓宽度 已设置注记文本 像素 0 "text-halo-width": 2
文本光环模糊化 字体外轮廓模糊化的宽度 已设置注记文本 像素 0 "text-halo-blur": 0
文本允许重叠 勾选时,即使多个文本间存在冲突,也会全部显示 已设置注记文本 - false "text-allow-overlap": false
忽略位置 勾选时,即使子图符号间存在冲突,也会全部显示 已设置注记文本 - false "text-ignore-placement": false
文本节距排列 自动匹配“旋转对齐”的值 已设置注记文本 - auto "text-pitch-alignment": "auto"
旋转对齐 已设置注记文本 - auto "text-rotation-alignment": "auto"
文本对齐 换行对齐方式 已设置注记文本 - center "text-justify": "left"
文本排列 注记围绕定位点的方位 已设置注记文本 - center "text-anchor": "left"
最大角度 字符间最大变化角度? 采用线模式注记 45 "text-max-angle": 45
旋转角度 注记旋转角度 已设置注记文本 0 "text-rotate": 0
是否保持垂直 “位置”为“line” “旋转对齐”为“map” - true "text-keep-upright": false
大小写转换 None:不执行; Uppercase:所有字母用大写; Lowercase:所有字母用小写; - - none "text-transform": "none"
文本偏移 注记在X/Y方向偏移值 - ems 0,0 "text-offset": [ 4, 5 ]
文本可选 值为true,当注记与其他子图符号存在冲突时,只显示子图符号,不显示注记文本 - - false "text-optional": true
文本平移排列 - map "text-translate-anchor": "viewport"
文本平移 - 像素 0,0 "text-translate": [ 3, 4 ]
图符大小 注记填充图案的大小 已设置“注记填充图案” 图标大小倍数 1 "icon-size": 3
图符颜色 注记填充图案的颜色 已设置“注记填充图案” - "icon-color": "rgba(252, 0, 40, 1)"
图符透明度 注记填充图案的透明度 已设置“注记填充图案” - 1 "icon-opacity": 0.5
注记填充图案 注记填充图案的样式 - - - "icon-image": "respt_首都"
图符文本自适应 - - none "icon-text-fit": "none"
图符文本自适应间距 添加到'图标文本拟合'尺寸的附加区域的大小,按顺时针顺序:顶部,右侧,底部,左侧 - 像素 0,0,0,0 "icon-text-fit-padding": [ 1, 2, 3, 4 ]
图符间距 - 像素 2 "icon-padding": 1
图符光环颜色 子图 - - - "icon-halo-color": "rgba(245, 166, 35, 1)"
图符光环宽度 - 像素 0 "icon-halo-width": 1
图符光环模糊化 - 像素 0 "icon-halo-blur": 2
是否重叠 - - false "icon-allow-overlap": true
忽略位置 - - false "icon-ignore-placement": true
图符可选 - - false "icon-optional": false
旋转排列 - - auto "icon-rotation-alignment": "map"
图符旋转 - 0 "icon-rotate": 0
是否保持垂直 - - false "icon-keep-upright": true
图符偏移 - 0,0 "icon-offset": [ 1, 1 ]
图符平移 - - 0,0 "icon-translate": [ 2, 2 ]
图符平移排列 - - - "icon-translate-anchor": "viewport"