Рисование листовки не удалит объекты, добавленные при загрузке страницы из L.geo JSON () - PullRequest
0 голосов
/ 06 марта 2020

Я загружаю Geo Django GeometryCollection из записи базы данных и помещаю их в featureGroup (), используя L.geo JSON (). Когда я пытаюсь редактировать или удалять отдельные слои, это не работает, и нет сообщения об ошибке. Однако, когда я использую кнопку «Очистить все слои», она удаляет все слои успешно. Есть ли где-то, что я должен посмотреть, чтобы выяснить это?

ОБНОВЛЕНИЕ : Я заметил сообщение об ошибке при редактировании, показанное ниже. Удаление (значок tra sh) по-прежнему не работает или не выдает сообщение об ошибке, когда я пытаюсь удалить элементы, размещенные при загрузке страницы.

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

Использование Leaflet Draw 1.0.4 (Leaflet 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>

1 Ответ

0 голосов
/ 07 марта 2020

Поскольку вы не показываете выборку данных Geo JSON, которые воспроизводят проблему, трудно точно определить причину.

Однако сообщение об ошибке точно такое же, как и при попробуйте отредактировать или удалить группы слоев Leaflet с помощью Leaflet.draw, см. Draw Leaflet "Не удается прочитать свойство 'enable' of undefined", добавив элемент управления к слою geo JSON

Возможный обходной путь: сгладьте слои перед добавлением их в редактируемый слой, как показано в связанном посте.

...