Entfernen / Löschen eines Features aus der OpenLayers-Vektorebene


15

Ich habe eine OpenLayers-Ebene mit mehreren Vektoren. Ich kenne die OpenLayers-Feature-ID (z. B. OpenLayers.Feature.Vector_241) und möchte wissen, wie Sie dieses Feature und nur dieses Feature entfernen können.

Ich habe überlegt, sie alle zu löschen und dann ein Array zu durchlaufen, um sie neu zu zeichnen, aber das scheint ein wenig unelegant und langwierig zu sein.

Ich habe verschiedene Versionen des folgenden Codes ausprobiert:

layer.removeFeatures( featureID );

Und

layer.removeFeatures( [featureID] );

Und

layer.removeFeatures( {feature : featureID });

Etc...

Jede Hilfe ist willkommen!

Vielen Dank

C

Antworten:


20

Ich glaube nicht, dass OpenLayers in der Lage ist, ein Feature durch die Bereitstellung von zu entfernen featureID. Es scheint, als könne ein Feature nur entfernt werden, indem ein Feature oder ein Array von Features bereitgestellt wird:

layer.removeFeatures(featureObject);

Sie können jedoch stattdessen zuerst das Feature suchen und dann das gefundene Feature entfernen:

layer.removeFeatures(layer.getFeatureById(featureID));

Oder ähnlich, wenn es nicht die OpenLayers FeatureID ist, die Sie haben

layer.removeFeatures(layer.getFeatureBy('myId', myID));

Ich mag das Denken! Das Problem ist jedoch, dass die Anweisung "layer.getFeatureById (featureID))" null zurückgibt und das removeFeature () daher nicht funktioniert. Ich bin zu 100% davon überzeugt, dass ich die richtigen FeatureIDs habe.
CatchingMonkey

1
Vergiss das. Ich habe die falsche featureID verwendet. Ich benutze dein zweites Beispiel und es funktioniert perfekt. Schön!
CatchingMonkey

5

Das hat bei mir funktioniert:

*layer.removeFeatures(featureObject);*

Aber ich habe das Feature als globale Variable, vielleicht sollten Sie in anderen Fällen versuchen, die Feature-ID beizubehalten, um zu suchen, um sie zu entfernen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.