我正在尝试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等。
任何帮助,不胜感激:)