ลบ / ลบสถานที่จากชั้นเวกเตอร์ OpenLayers


15

ฉันมีเลเยอร์ OpenLayers พร้อมด้วยเวกเตอร์หลายตัว ฉันรู้ ID ฟีเจอร์ของ OpenLayers (เช่น OpenLayers.Feature.Vector_241) และฉันต้องการจะรู้วิธีลบฟีเจอร์นี้และฟีเจอร์นี้เท่านั้น?

ฉันได้พิจารณาลบพวกเขาทั้งหมดแล้ววนรอบอาร์เรย์เพื่อวาดใหม่พวกเขา แต่นี่ดูเหมือนจะไม่ค่อยเหมาะสมและยืดยาว

ฉันได้ลองใช้รหัส folllowing หลายเวอร์ชันแล้ว:

layer.removeFeatures( featureID );

และ

layer.removeFeatures( [featureID] );

และ

layer.removeFeatures( {feature : featureID });

ฯลฯ ...

ยินดีต้อนรับทุกความช่วยเหลือ!

ขอบคุณ

คำตอบ:


20

ฉันไม่คิดว่า OpenLayers featureIDที่มีความสามารถในการลบคุณลักษณะโดยการให้ ดูเหมือนว่าจะสามารถลบคุณลักษณะได้โดยการให้คุณสมบัติหรืออาร์เรย์ของคุณสมบัติเท่านั้น:

layer.removeFeatures(featureObject);

แต่คุณสามารถค้นหาสถานที่ก่อนแล้วจึงลบสถานที่ที่พบ:

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

หรือคล้ายกันถ้าไม่ใช่ OpenLayers FeatureID คุณมีอยู่แล้ว

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

ฉันชอบความคิด! ปัญหาคือแม้ว่าคำสั่ง "layer.getFeatureById (featureID))" จะส่งคืนค่า null ดังนั้น removeFeature () จึงใช้งานไม่ได้ ฉัน 100% ว่าฉันมี FeatureIDs ที่ถูกต้องแล้ว .... มีความคิดอะไรอีกไหม?
CatchingMonkey

1
เกานั้น ฉันใช้ผิดคุณสมบัติ ID ฉันใช้ตัวอย่างที่สองของคุณแล้วมันทำงานได้อย่างสมบูรณ์ ทำได้ดีนี่!
CatchingMonkey

5

สิ่งนี้ใช้ได้กับฉัน:

*layer.removeFeatures(featureObject);*

แต่ฉันได้รับคุณลักษณะนี้เป็นตัวแปรส่วนกลางบางทีในกรณีอื่น ๆ คุณควรพยายามเก็บ ID คุณลักษณะเพื่อค้นหาเพื่อลบออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.