Skip to content

Marker

Marker是最常用的点标记几何,用于在指定地理坐标上绘制一个标记图标(矢量、图片或SVG路径标记)。它继承自 GeometrygetCoordinates()/setCoordinates()CenterMixin 提供。

js
import { VectorLayer, Marker } from "maptalks";

const layer = new VectorLayer("vector");
const marker = new Marker([100, 0], {
  symbol: {
    markerType: "path",
    markerPath: "M 0 0 L 10 10 L 0 10 Z",
    markerFill: "#DE3333",
  },
}).addTo(layer);

构造函数

js
new Marker(coordinates, options?)

参数:

  • coordinates Coordinate | Number[] 标记的地理坐标([x,y]Coordinate,可含z)。
  • options Object 构造选项。

options 配置项

Marker 自身

配置名类型描述默认值
symbolObject标记样式path类型内置样式
hitTestForEventBoolean是否对事件做命中测试false
collisionBoolean是否参与碰撞检测true

继承自 GeometryidvisibleinteractivedraggablezIndexproperties 等同样适用。

symbol 中的 Marker 样式

通用标记属性(MarkerCommonSymbol):

配置名类型默认值描述
markerTypeString'path'矢量标记类型(ellipse/cross/x/diamond/bar/square/rectangle/triangle/pin/pie/path)
markerFileString图片标记URL(优先级最高)
markerWidth / markerHeightNumber24 × 34标记像素宽/高
markerDx / markerDyNumber0标记相对锚点的像素偏移
markerHorizontalAlignmentString依类型水平对齐
markerVerticalAlignmentString依类型垂直对齐
markerPlacementString'point'放置方式
markerRotationNumber0旋转角度(度)
markerOpacityNumber1不透明度

矢量标记特有markerFillmarkerFillOpacitymarkerFillPatternFilemarkerLineColormarkerLineWidthmarkerLineOpacitymarkerLineDasharray

图片标记特有markerFile

路径标记特有(Marker 默认):markerPathmarkerPathWidthmarkerPathHeightmarkerFillmarkerLineColor 等。

文本标记(Marker 也支持):textNametextFaceNametextSizetextFilltextOpacitytextHaloFilltextHaloRadiustextWrapWidthtextLineSpacingtextDxtextDy 等。

成员方法

  • getCoordinates(): Coordinate / setCoordinates(coordinates): this — 获取/设置标记坐标(来自 CenterMixin)
  • getOutline(): Marker — 返回以当前标记包围盒为方框的轮廓标记

其余方法(getCentergetExtentgetSymbol/setSymbolgetProperties/setPropertiesgetId/setIdshow/hidetranslateaddTo/removetoGeoJSON/toJSON 等)继承自 Geometry

静态方法

  • Marker.mergeOptions(options): this — 合并默认配置
  • Marker.fromJSON(json) — 从JSON还原几何(沿用 Geometry.fromJSON)

事件

Marker 的事件均继承自 Geometrypositionchangesymbolchangeidchangepropertieschangezindexchangeshow/hideremovestart/removeend/remove 等。

js
marker.on("positionchange", () => {
  console.log("marker at", marker.getCoordinates());
});