Rimuovi / Elimina una funzione dal livello vettoriale OpenLayers


15

Ho uno strato OpenLayers con diversi vettori su di esso. Conosco l'ID della funzione OpenLayers (ad esempio OpenLayers.Feature.Vector_241) e vorrei sapere come rimuovere questa funzione e solo questa?

Ho preso in considerazione la possibilità di eliminarli tutti e quindi passare in rassegna un array per ridisegnarli, ma questo sembra un po 'inelegante e lungo.

Ho provato una varietà di versioni del codice seguente:

layer.removeFeatures( featureID );

E

layer.removeFeatures( [featureID] );

E

layer.removeFeatures( {feature : featureID });

Eccetera...

Tutto l'aiuto è il benvenuto!

Grazie

C

Risposte:


20

Non penso che OpenLayers sia in grado di rimuovere una funzionalità fornendo il featureID. Sembra che possa rimuovere solo una funzionalità fornendo una funzionalità o una serie di funzionalità:

layer.removeFeatures(featureObject);

Ma è possibile invece individuare prima la funzione e quindi rimuovere la funzione trovata:

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

O simile se non è il FeatureID OpenLayers che hai, quindi

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

Mi piace il pensiero! Il problema è tuttavia che l'istruzione "layer.getFeatureById (featureID))" restituisce null e quindi la funzione removeFeature () non funziona. Im 100% che ho i giusti FeatureIDs .... altri pensieri?
CatchingMonkey,

1
Grattalo. Stavo usando il featureID sbagliato. Sto usando il tuo secondo esempio e funziona perfettamente. Ben fatto!
CatchingMonkey,

5

Questo ha funzionato per me:

*layer.removeFeatures(featureObject);*

Ma ho la funzione come variabile globale, forse in altri casi dovresti provare a mantenere l'ID della funzione per cercare di rimuoverlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.