使用mapbox-gl-draw绘制不同的标记

时间:2019-05-21 13:01:11

标签: mapbox-gl-js mapbox-gl-draw

我正在尝试mapbox-gl-draw和挣扎,我的目标是要有一组按钮,使我能够选择要添加到地图的内容-在这种情况下为“点”或“标记”。我通过复制draw_point-

创建了一个自定义模式
var myMode1= MapboxDraw.modes.draw_point;

单击按钮调用Draw.changeMode()时,可以使用此功能,但我不知道是如何以不同方式设置不同点的样式。我尝试将属性添加到新模式:

myMode1.onClick = function(state, e) {
  // `this.newFeature` takes geojson and makes a DrawFeature
  var point = this.newFeature({
    type: 'Feature',
    properties: {
      fType: 'myMarker1'
    },
    geometry: {
      type: 'Point',
      coordinates: [e.lngLat.lng, e.lngLat.lat]
    }
  });
  this.addFeature(point); // puts the point on the map
};

然后使用以下样式引用属性:

  styles: [{
      'id': 'gl-draw-point-fill-active',
      'type': 'fill',
      'filter': ['all', ['==', 'active', 'true'],
        ['==', '$type', 'Point'],
        ['!=', 'mode', 'static']
      ],
      'paint': {
        'fill-color': [
          "case", ['==', ['get', "fType"], 'myMarker1'], "#00ff00", ['==', ['get', "fType"], 'myMarker2'], "#0000ff",
          '#ff0000'
        ],
        'fill-outline-color': '#3bb2d0',
        'fill-opacity': 0.5
      }
    }

但这似乎永远不会检索该属性,并且始终默认为后备颜色。

我的目标是拥有一系列按钮,通过这些按钮可以选择不同类型的标记在地图上进行绘制,每种标记使用不同的颜色。理想情况下,我还可以在其上覆盖文本以将其标识为A,B,C等。

任何帮助,不胜感激:)

0 个答案:

没有答案