MVTLayer
继承XYZLayer类,用于添加MVT标准图层。
构造函数
| 构造函数 | 描述 |
|---|---|
| BMapGL.MVTLayer(options: object) | MVTLayer继承XYZLayer参数,实例化TileLayer,用于添加MVT标准图层,通过options设置图层瓦片请求地址、显示等级、显示范围、显示图层、图层样式等 |
配置选项
options属性除XYZLayer参数外,增加以下参数:
| 属性 | 类型 | 描述 |
|---|---|---|
| transform | object | 坐标系转换参数,详见坐标系转换 |
| gridModel | string | 网格类型,可选择:BMapGL.MVTLayer.GridModel.GOOGLEWEB或者BMapGL.MVTLayer.GridModel.BAIDUEWEB,默认是BAIDUEWEB |
| spanLevel | number | 跨网格等级加载数据,默认0。建议使用-1 |
| noCollision | boolean | 点数据是否不参与碰撞,默认true,即不参与碰撞 |
| useThumb | boolean | 缩放过程中是否使用跨图层数据,默认true |
| encrypt | boolean | 是否是加载慧图平台加密数据,默认false |
| idProperty | string | 通过要素属性字段赋值要素id,默认首先读取feature的id属性,其次读取feature的properties中的id,都没有则是undefined。如果缺失id,会造成一个瓦片的一个图层中只能解析一个几何数据 |
| layers | array | 可解析的图层,线面名称顺序对应渲染顺序,对应style中的key,默认则从数据源中所有layer中划分点、线、面三个图层数据。说明:显示顺序永远是【点>线>面】 |
| style | object | 图层显示样式配置对象,详见样式配置 |
坐标系转换
| 属性 | 类型 | 描述 |
|---|---|---|
| source | string | 来源网格数据的坐标系,可选择:BD09MC|EPSG3857|GCJ02,默认是:BD09MC |
| target | string | 目标数据的坐标系(用户可以不进行设置),默认是:BD09MC |
样式配置
| 属性 | 类型 | 描述 |
|---|---|---|
| layerName | string | layers参数为默认,则layerName取'point'|'line'|'fill';layers参数为图层名数组,则layerName是layers中任一个 |
| type | string | 支持polygon、polyline、point三种图层类型 |
| visible | boolean | 是否显示,默认true |
| minZoom | number | 最小显示等级,默认3 |
| maxZoom | number | 最大显示等级,默认23 |
| painter | object | 样式设置,详见点样式、线样式、面样式 |
点样式
| 属性 | 类型 | 描述 |
|---|---|---|
| name | string | StyleExpress | 文字,默认空 |
| fontSize | number | StyleExpress | 文字大小,默认22 |
| color | string | StyleExpress | 文字颜色,默认#0d20c9 |
| haloSize | number | StyleExpress | 文字描边大小,默认2 |
| strokeColor | string | StyleExpress | 文字描边颜色,默认#fff |
| icon | string | StyleExpress | 图标地址,默认空,如果symbolPath与icon同时存在,会优先使用icon |
| iconSize | array | StyleExpress | 图标大小,默认[32, 32] |
| symbolPath | string | StyleExpress | svg图标Path或者内置的14种图形(具体查看SymbolShapeType),默认空 |
| symbolFillColor | string | StyleExpress | svg图标填充色,默认#000 |
| symbolFillOpacity | number | StyleExpress | svg图标填充色透明度,默认1 |
| symbolScale | number | StyleExpress | svg图标缩放比例,默认1 |
| symbolRotation | number | StyleExpress | svg图标旋转角度,默认0 |
| symbolStrokeColor | string | StyleExpress | svg图标描边色,默认#000 |
| symbolStrokeOpacity | number | StyleExpress | svg图标描边透明度,默认0 |
| symbolStrokeWeight | number | StyleExpress | svg图标描边宽度,默认0 |
| textOnIcon | boolean | StyleExpress | 是否有文字背景图标,默认false |
| textOnIconSize | array | StyleExpress | 文字背景图标大小,默认[32, 32] |
| textOnIconUrl | string | StyleExpress | 文字背景图标地址,默认空 |
| textMargin | number | StyleExpress | 对象距离坐标的位置,默认0 |
| direction | number | StyleExpress | 文字位于图标的方向,取值为:0, 1, 2, 3, 4 分别表示bottom, right, top, left, center |
| visibility | boolean | StyleExpress | 是否显示 |
线样式
| 属性 | 类型 | 描述 |
|---|---|---|
| strokeLineJoin | string | StyleExpress | 线连接处类型,可选'miter', 'round', 'bevel',默认miter |
| strokeLineCap | string | StyleExpress | 线端头类型,可选'round', 'butt', 'square',默认round |
| strokeColor | string | StyleExpress | 线颜色,默认#142655 |
| strokeWeight | number | StyleExpress | 线宽度,默认2 |
| strokeOpacity | number | StyleExpress | 线透明度,默认1 |
| strokeStyle | string | StyleExpress | 线类型,可选'solid'、'dashed' 和 'dotted',默认solid |
| dashArray | array | StyleExpress | 线虚线设置,默认[8,4]表示实线部分长8像素,间隙部分长4像素 |
| visibility | boolean | StyleExpress | 是否显示 |
面样式
| 属性 | 类型 | 描述 |
|---|---|---|
| fillColor | string | StyleExpress | 面填充颜色,默认#142655 |
| fillOpacity | number | StyleExpress | 面填充透明度,默认1 |
| strokeLineJoin | string | StyleExpress | 描边线连接处类型,可选'miter', 'round', 'bevel',默认miter |
| strokeLineCap | string | StyleExpress | 描边线端头类型,可选'round', 'butt', 'square',默认round |
| strokeColor | string | StyleExpress | 描边线颜色,默认#dec41b |
| strokeWeight | number | StyleExpress | 描边线宽度,默认0 |
| strokeOpacity | number | StyleExpress | 描边线透明度,默认1 |
| strokeStyle | string | StyleExpress | 描边线类型,可选'solid'、'dashed' 和 'dotted',默认solid |
| dashArray | array | StyleExpress | 描边线虚线设置,默认[8,4]表示实线部分长8像素,间隙部分长4像素 |
| visibility | boolean | StyleExpress | 是否显示 |
示例
ts
// 创建MVT图层
const layer = new BMapGL.MVTLayer({
tileUrlTemplate: 'https://example.com/mvt/{z}/{x}/{y}.pbf',
transform: {
source: 'BD09MC',
target: 'BD09MC'
},
gridModel: BMapGL.MVTLayer.GridModel.BAIDUEWEB,
spanLevel: -1,
style: {
layerName: 'point',
type: 'point',
painter: {
name: '${name}',
fontSize: 22,
color: '#0d20c9',
icon: 'marker.png',
iconSize: [32, 32]
}
}
});
// 添加图层到地图
map.addLayer(layer);注意事项
坐标系设置:
- 注意source和target坐标系的匹配
- 合理设置网格类型
- 确保数据转换的准确性
样式配置:
- 合理设置图层显示顺序
- 注意样式属性的优先级
- 控制图层显示范围
性能优化:
- 合理使用spanLevel属性
- 注意图层数量控制
- 优化样式渲染性能
