我正在从数据库记录中加载GeoDjango GeometryCollection,并使用L.geoJSON()将其放置在featureGroup()上。当我尝试编辑或删除各个图层时,它不起作用,也没有错误消息。但是,当我使用“清除所有图层”按钮时,它会成功删除所有图层。我应该在哪里找到解决办法?
UPDATE:我注意到编辑中的错误消息,如下所示。当我尝试删除加载页面时放置的项目时,删除(垃圾图标)仍然不起作用或提供任何错误消息。
Uncaught TypeError: Cannot read property 'enable' of undefined
at i._enableLayerEdit (leaflet.draw.js:formatted:2204)
at i.eachLayer (leaflet.js:5)
at i.addHooks (leaflet.draw.js:formatted:2131)
at i.enable (leaflet.js:5)
at i.enable (leaflet.draw.js:formatted:2115)
at HTMLAnchorElement.s (leaflet.js:5)
使用传单抽签1.0.4(传单1.6.0)
<script>
var mymap = L.map('mapid').setView([39.828, -98.579], 4),
layer = L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: '<my token>'
}),
drawnItems = L.featureGroup().addTo(mymap);
L.control.layers({
'layer': layer.addTo(mymap),
},
{
'drawLayer': drawnItems
}).addTo(mymap);
{% if coords %}
var geos = {% autoescape off %}{{coords}}['geometries']{% endautoescape %}
$(geos).each(function() {
L.geoJSON(this).addTo(drawnItems);
})
{% endif %}
mymap.addControl(new L.Control.Draw({
edit: {
featureGroup: drawnItems,
remove: true,
poly: {
allowIntersection: false
},
},
draw: {
polyline: false,
circle: false,
circlemarker: false,
polygon: {
allowIntersection: false
}
}
})
);
</script>
由于您没有显示可重现此问题的GeoJSON数据样本,因此很难确切说明原因。
但是,错误消息与您尝试使用Leaflet.draw编辑或删除Leaflet图层组时完全相同,请参见Leaflet Draw "Cannot read property 'enable' of undefined" adding control to geoJSON layer
可能的解决方法:在将图层添加到可编辑图层之前对其进行拼合,如链接的文章所示。