传单抽签不会删除从L.geoJSON()载入页面时添加的功能

问题描述 投票:0回答:1

我正在从数据库记录中加载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)

enter image description here

使用传单抽签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 &copy; <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>
leaflet geodjango leaflet.draw
1个回答
0
投票

由于您没有显示可重现此问题的GeoJSON数据样本,因此很难确切说明原因。

但是,错误消息与您尝试使用Leaflet.draw编辑或删除Leaflet图层组时完全相同,请参见Leaflet Draw "Cannot read property 'enable' of undefined" adding control to geoJSON layer

可能的解决方法:在将图层添加到可编辑图层之前对其进行拼合,如链接的文章所示。

© www.soinside.com 2019 - 2024. All rights reserved.