Skip to content

MVTLayer

继承XYZLayer类,用于添加MVT标准图层。

构造函数

构造函数描述
BMapGL.MVTLayer(options: object)MVTLayer继承XYZLayer参数,实例化TileLayer,用于添加MVT标准图层,通过options设置图层瓦片请求地址、显示等级、显示范围、显示图层、图层样式等

配置选项

options属性除XYZLayer参数外,增加以下参数:

属性类型描述
transformobject坐标系转换参数,详见坐标系转换
gridModelstring网格类型,可选择:BMapGL.MVTLayer.GridModel.GOOGLEWEB或者BMapGL.MVTLayer.GridModel.BAIDUEWEB,默认是BAIDUEWEB
spanLevelnumber跨网格等级加载数据,默认0。建议使用-1
noCollisionboolean点数据是否不参与碰撞,默认true,即不参与碰撞
useThumbboolean缩放过程中是否使用跨图层数据,默认true
encryptboolean是否是加载慧图平台加密数据,默认false
idPropertystring通过要素属性字段赋值要素id,默认首先读取feature的id属性,其次读取feature的properties中的id,都没有则是undefined。如果缺失id,会造成一个瓦片的一个图层中只能解析一个几何数据
layersarray可解析的图层,线面名称顺序对应渲染顺序,对应style中的key,默认则从数据源中所有layer中划分点、线、面三个图层数据。说明:显示顺序永远是【点>线>面】
styleobject图层显示样式配置对象,详见样式配置

坐标系转换

属性类型描述
sourcestring来源网格数据的坐标系,可选择:BD09MC|EPSG3857|GCJ02,默认是:BD09MC
targetstring目标数据的坐标系(用户可以不进行设置),默认是:BD09MC

样式配置

属性类型描述
layerNamestringlayers参数为默认,则layerName取'point'|'line'|'fill';layers参数为图层名数组,则layerName是layers中任一个
typestring支持polygon、polyline、point三种图层类型
visibleboolean是否显示,默认true
minZoomnumber最小显示等级,默认3
maxZoomnumber最大显示等级,默认23
painterobject样式设置,详见点样式线样式面样式

点样式

属性类型描述
namestring | StyleExpress文字,默认空
fontSizenumber | StyleExpress文字大小,默认22
colorstring | StyleExpress文字颜色,默认#0d20c9
haloSizenumber | StyleExpress文字描边大小,默认2
strokeColorstring | StyleExpress文字描边颜色,默认#fff
iconstring | StyleExpress图标地址,默认空,如果symbolPath与icon同时存在,会优先使用icon
iconSizearray | StyleExpress图标大小,默认[32, 32]
symbolPathstring | StyleExpresssvg图标Path或者内置的14种图形(具体查看SymbolShapeType),默认空
symbolFillColorstring | StyleExpresssvg图标填充色,默认#000
symbolFillOpacitynumber | StyleExpresssvg图标填充色透明度,默认1
symbolScalenumber | StyleExpresssvg图标缩放比例,默认1
symbolRotationnumber | StyleExpresssvg图标旋转角度,默认0
symbolStrokeColorstring | StyleExpresssvg图标描边色,默认#000
symbolStrokeOpacitynumber | StyleExpresssvg图标描边透明度,默认0
symbolStrokeWeightnumber | StyleExpresssvg图标描边宽度,默认0
textOnIconboolean | StyleExpress是否有文字背景图标,默认false
textOnIconSizearray | StyleExpress文字背景图标大小,默认[32, 32]
textOnIconUrlstring | StyleExpress文字背景图标地址,默认空
textMarginnumber | StyleExpress对象距离坐标的位置,默认0
directionnumber | StyleExpress文字位于图标的方向,取值为:0, 1, 2, 3, 4 分别表示bottom, right, top, left, center
visibilityboolean | StyleExpress是否显示

线样式

属性类型描述
strokeLineJoinstring | StyleExpress线连接处类型,可选'miter', 'round', 'bevel',默认miter
strokeLineCapstring | StyleExpress线端头类型,可选'round', 'butt', 'square',默认round
strokeColorstring | StyleExpress线颜色,默认#142655
strokeWeightnumber | StyleExpress线宽度,默认2
strokeOpacitynumber | StyleExpress线透明度,默认1
strokeStylestring | StyleExpress线类型,可选'solid'、'dashed' 和 'dotted',默认solid
dashArrayarray | StyleExpress线虚线设置,默认[8,4]表示实线部分长8像素,间隙部分长4像素
visibilityboolean | StyleExpress是否显示

面样式

属性类型描述
fillColorstring | StyleExpress面填充颜色,默认#142655
fillOpacitynumber | StyleExpress面填充透明度,默认1
strokeLineJoinstring | StyleExpress描边线连接处类型,可选'miter', 'round', 'bevel',默认miter
strokeLineCapstring | StyleExpress描边线端头类型,可选'round', 'butt', 'square',默认round
strokeColorstring | StyleExpress描边线颜色,默认#dec41b
strokeWeightnumber | StyleExpress描边线宽度,默认0
strokeOpacitynumber | StyleExpress描边线透明度,默认1
strokeStylestring | StyleExpress描边线类型,可选'solid'、'dashed' 和 'dotted',默认solid
dashArrayarray | StyleExpress描边线虚线设置,默认[8,4]表示实线部分长8像素,间隙部分长4像素
visibilityboolean | 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);

注意事项

  1. 坐标系设置:

    • 注意source和target坐标系的匹配
    • 合理设置网格类型
    • 确保数据转换的准确性
  2. 样式配置:

    • 合理设置图层显示顺序
    • 注意样式属性的优先级
    • 控制图层显示范围
  3. 性能优化:

    • 合理使用spanLevel属性
    • 注意图层数量控制
    • 优化样式渲染性能

基于 MIT 许可发布