Estoy trabajando en la opción de eliminar haciendo doble clic en OpenLayers. Yo uso el siguiente código:
map.on('dblclick', function(evt) { var selectCollection = selectInteraction.getFeatures(); if(selectCollection.getLength() > 0){ var answer = window.confirm("Do you want to delete?") if (answer) { vectorLayer.getSource().removeFeature(selectCollection.item(0)); } } });en base a estos ejemplos:
https://gis.stackexchange.com/questions/126581/openlayers-3-capturing-various-click-events
Cómo crear un cuadro de diálogo con las opciones "sí" y "no"
todo sería perfecto, pero no puedo eliminar las cadenas lineales y los puntos en algún momento.
Como puede ver a continuación, todas las formas que tienen la "superficie rellena" se pueden eliminar fácilmente después de la selección.
estoy consiguiendo el
**Vector.js:906
TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'forEach') **
en cambio.
No sé cómo solucionarlo, francamente. Al leer esta sugerencia:
No se puede leer la propiedad 'forEach' de undefined
Creo que debería usar el método push , aunque no veo ninguna opción para distinguir mi selectInteraction entre la geometría separada.
Mi JSFiddle completo está aquí:
https://jsfiddle.net/skwbdx0j/
¿Hay alguna opción para arreglarlo?
ACTUALIZAR:
Colocar una determinada variable dentro de getSource no resolvió este problema.
map.on('dblclick', function(evt) { var selectCollection = selectInteraction.getFeatures(); if(selectCollection.getLength() > 0){ var answer = window.confirm("Do you want to delete?") if (answer) { vectorLayer.getSource(lineInteraction). // the same line removeFeature(selectCollection.item(0)); } } });