PointShapeLayer

点形状图层,使用2D几何图形(圆形、方形、三角形等)渲染点数据

构造函数

  • 创建点形状图层实例

    参数类型说明
    options 可选PointShapeLayerOptions配置项
    属性类型说明
    autoSelectboolean是否允许鼠标悬浮事件
    crsstring来源坐标系,可选BD09LL、BD09MC、GCJ02
    enablePickedboolean是否允许鼠标点击事件
    idKeystring数据项属性key
    isFlatboolean是否贴地渲染
    maxZoomnumber最大显示缩放等级
    minZoomnumber最小显示缩放等级
    opacitynumber透明度,取值范围0 - 1
    pickHeightnumber点击拾取矩形高,单位像素
    pickWidthnumber点击拾取矩形宽,单位像素
    popEventboolean事件是否冒泡
    selectedColorstring选中数据颜色
    selectedIndexnumber选中数据索引
    stylePointShapeStyle点形状显示样式配置对象
    visibleboolean是否显示
    zIndexnumber显示层级

    返回值 PointShapeLayer

    示例代码1

    // 简单用法:默认圆形点
    const pointShapeLayer = new BMap.PointShapeLayer({
    style: { size: 20, color: '#ff0000', opacity: 0.8 },
    });
    map.addLayer(pointShapeLayer);
    pointShapeLayer.setData({
    type: 'FeatureCollection',
    features: [
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.404, 39.915] }, properties: { id: 1 } },
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.414, 39.905] }, properties: { id: 2 } },
    ],
    });

    示例代码2

    // 五角星形状 + 描边 + 可点击
    const pointShapeLayer = new BMap.PointShapeLayer({
    enablePicked: true,
    selectedColor: 'rgba(255, 0, 0, 1.0)',
    style: {
    shapeType: 7,
    size: 40,
    color: '#ffcc00',
    opacity: 1,
    strokeColor: '#ff6600',
    strokeWeight: 2,
    },
    });
    map.addLayer(pointShapeLayer);
    pointShapeLayer.setData({
    type: 'FeatureCollection',
    features: [
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.404, 39.915] }, properties: { id: 1 } },
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.414, 39.910] }, properties: { id: 2 } },
    ],
    });

    示例代码3

    // 数据驱动:不同要素显示不同形状和颜色
    const pointShapeLayer = new BMap.PointShapeLayer({
    enablePicked: true,
    isFlat: true,
    style: {
    shapeType: ['match', ['get', 'type'], 'warning', 2, 'info', 0, 0],
    size: 28,
    color: ['match', ['get', 'type'], 'warning', '#ff3300', 'info', '#0099ff', '#999999'],
    rotation: ['get', 'heading'],
    scale: 1,
    strokeColor: '#ffffff',
    strokeWeight: 1,
    },
    });
    map.addLayer(pointShapeLayer);
    pointShapeLayer.setData({
    type: 'FeatureCollection',
    features: [
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.404, 39.915] }, properties: { id: 1, type: 'warning', heading: 45 } },
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.414, 39.905] }, properties: { id: 2, type: 'info', heading: 0 } },
    ],
    });

属性

锚点位置枚举

Type Declaration

  • BOTTOM_CENTER: 6

    下中

  • BOTTOM_LEFT: 7

    左下

  • BOTTOM_RIGHT: 5

    右下

  • CENTER: 0

    中心

  • LEFT_CENTER: 8

    左中

  • RIGHT_CENTER: 4

    右中

  • TOP_CENTER: 2

    上中

  • TOP_LEFT: 1

    左上

  • TOP_RIGHT: 3

    右上

图形类型枚举

Type Declaration

  • ARROW: 5

    箭头

  • ARROW_TAIL: 6

    箭头+尾巴

  • CIRCLE: 0

    圆形

  • CROSS: 4

    十字

  • DIAMOND: 3

    菱形

  • SQUARE: 1

    正方形

  • STAR: 7

    五角星

  • TRIANGLE: 2

    三角形

  • WATERDROP: 9

    水滴形

方法

  • 添加不显示数据索引

    参数类型说明
    indexnumber数据索引

    返回值 void

    示例代码1

    pointShapeLayer.addDelIndex(3);
    
  • 清空不显示数据索引

    返回值 void

  • 清空对象状态

    返回值 void

  • 触发图层重绘

    返回值 void

  • 获取所有要素状态

    返回值 object

  • 获取数据源

    返回值 object

  • 返回图层最大显示等级

    返回值 number

  • 返回图层最小显示等级

    返回值 number

  • 返回图层透明度

    返回值 number

  • 根据数据索引获取数据项

    参数类型说明
    indexnumber数据索引
    modelstring取值 'onmousemove''onclick'

    返回值 { dataIndex: number; dataItem: object }

    示例代码1

    const item = pointShapeLayer.getPickedItem(0, 'onclick');
    
  • 返回图层显示/隐藏状态

    返回值 boolean

  • 返回图层层级

    返回值 number

  • 移除不显示数据索引

    参数类型说明
    indexnumber数据索引

    返回值 void

    示例代码1

    pointShapeLayer.removeDelIndex(3);
    
  • 根据id移除对象状态

    参数类型说明
    keysstring数据id或id数组

    返回值 void

    示例代码1

    pointShapeLayer.removeState([1, 2]);
    
  • 全量替换所有要素状态

    参数类型说明
    inputsobjectid到状态对象的映射

    返回值 void

    示例代码1

    pointShapeLayer.replaceAllState({ 1: { hovered: true }, 2: { hovered: false } });
    
  • 运行时修改图层基础配置项(如坐标系、拾取设置等),合并到现有配置。不会自动触发重绘,如需生效可调用doOnceDraw()

    参数类型说明
    optionsPointShapeLayerOptions要合并的配置项
    属性类型说明
    autoSelectboolean是否允许鼠标悬浮事件
    crsstring来源坐标系,可选BD09LL、BD09MC、GCJ02
    enablePickedboolean是否允许鼠标点击事件
    idKeystring数据项属性key
    isFlatboolean是否贴地渲染
    maxZoomnumber最大显示缩放等级
    minZoomnumber最小显示缩放等级
    opacitynumber透明度,取值范围0 - 1
    pickHeightnumber点击拾取矩形高,单位像素
    pickWidthnumber点击拾取矩形宽,单位像素
    popEventboolean事件是否冒泡
    selectedColorstring选中数据颜色
    selectedIndexnumber选中数据索引
    stylePointShapeStyle点形状显示样式配置对象
    visibleboolean是否显示
    zIndexnumber显示层级

    返回值 void

    示例代码1

    pointShapeLayer.setBaseOptions({ crs: 'GCJ02', enablePicked: true, selectedColor: 'rgba(255,0,0,1)' });
    pointShapeLayer.doOnceDraw();
  • 设置数据源为GeoJSON数据对象

    参数类型说明
    dataobjectGeoJSON数据

    返回值 void

    示例代码1

    pointShapeLayer.setData({
    type: 'FeatureCollection',
    features: [
    { type: 'Feature', geometry: { type: 'Point', coordinates: [116.404, 39.915] }, properties: { id: 1 } },
    ],
    });
  • 向下移动一层

    返回值 void

  • 设置图层最大显示等级

    参数类型说明
    zoomnumber最大缩放等级

    返回值 void

    示例代码1

    pointShapeLayer.setMaxZoom(18);
    
  • 设置图层最小显示等级

    参数类型说明
    zoomnumber最小缩放等级

    返回值 void

    示例代码1

    pointShapeLayer.setMinZoom(5);
    
  • 设置图层透明度

    参数类型说明
    opacitynumber透明度,取值范围0 - 1

    返回值 void

    示例代码1

    pointShapeLayer.setOpacity(0.5);
    
  • 运行时修改图层样式配置项,合并到现有样式。修改后需调用doOnceDraw()触发重绘才能看到效果

    参数类型说明
    optionsPointShapeStyle要合并的样式配置项

    返回值 void

    示例代码1

    pointShapeLayer.setStyleOptions({ shapeType: 7, size: 40, color: '#ffcc00' });
    pointShapeLayer.doOnceDraw();
  • 向上移动一层

    返回值 void

  • 设置图层显示/隐藏

    参数类型说明
    visibleboolean是否显示

    返回值 void

    示例代码1

    pointShapeLayer.setVisible(false);
    
  • 设置图层叠加顺序

    参数类型说明
    zIndexnumber层级值

    返回值 void

    示例代码1

    pointShapeLayer.setZIndex(10);
    
  • 将当前图层设置为最上层

    返回值 void

  • 根据id设置要素状态,状态会参与样式表达式的求值(如feature-state条件判断)。状态变更会触发数据重新解析和重绘

    参数类型说明
    keysstring数据id或id数组(对应idKey字段的值)
    paramsobject状态对象,可包含任意键值对,在样式表达式中通过feature-state访问
    ifAppend 可选boolean是否追加合并。true=将params合并到已有状态;false=用params替换该要素的整个状态对象

    返回值 void

    示例代码1

    pointShapeLayer.updateState([1, 2], { hovered: true }, true);