我没有破解 Leaflet Draw 源就做到了。
将控件添加到地图后,我在控件内放置了一个隐藏的 div。然后,当创建一个多边形时,我会显示该 div。我使用 CSS 将其绝对定位在控件上,以便按钮“禁用”,并使用 CSS 使按钮看起来褪色。如果多边形被删除,那么我隐藏那个 div。
不是最好的解决方案,但我无需编辑源代码即可工作。
添加drawControl后,我添加了隐藏的div:
$('.leaflet-draw-section:first').append('<div class="leaflet-draw-inner-toolbar" title="Polygon already added"></div>');
这是切换它们的JS:
map.on('draw:created', function (e) {
var type = e.layerType,
layer = e.layer;
// keep the polygon on the map
drawnItems.addLayer(layer);
// disable the create polygon tools
$('.leaflet-draw-inner-toolbar').show();
});
map.on('draw:deleted', function(e) {
// enable the create polygon tools
$('.leaflet-draw-inner-toolbar').hide();
});
这是CSS:
.leaflet-draw-inner-toolbar {
background: none repeat scroll 0 0 rgba(255, 255, 255, 0.6);
bottom: 0;
display: none;
left: 0;
position: absolute;
right: 0;
top: 0;
}