您正在创建一个选项对象并且没有在任何地方使用它。如果要为 Leaflet Draw 使用自定义选项,则需要单独实例化控件,以便将选项对象添加到其中。接下来,您将引用editableLayers
作为保存绘制对象的层,但您没有在任何地方创建实际层。按着这些次序:
首先drawnControl: true
从您的地图选项中取出:
map = new L.Map('cartodb-map', {
center: [40,-98],
zoom: 4,
})
创建一个实际图层以在您的绘图选项中使用并将其添加到地图中:
var editableLayers = new L.FeatureGroup();
现在因为上面的行editableLayers
包含对实际层的引用,并且不会Uncaught ReferenceError: editableLayers is not defined
在您的控制台中抛出:
var options = {
position: 'topright',
draw: {
polyline: false,
polygon: false,
circle: false,
rectangle: false,
marker: {
icon: new MyCustomMarker()
}
},
edit: {
featureGroup: editableLayers, //REQUIRED!!
remove: false
}
};
现在使用您的选项单独创建绘图控件并将其添加到地图中:
var drawControl = new L.Control.Draw(options).addTo(map);
这是你的 Fiddle 的一个工作分支:http: //jsfiddle.net/ryntc3vv/
说了这么多,我真的很想知道你在哪里想出你做过/想做的事情。这没有任何意义,所以如果你在某个地方学习某种教程,我会说把它扔掉并坚持在 Leaflet Draw 存储库中随 Leaflet draw 提供的文档:https ://github.com/Leaflet /Leaflet.draw#adding-the-edit-toolbar我在这里和您之前的问题中所做的所有事情都被完美地涵盖了。