ฉันจะยกเลิกการเลือกสถานที่ใน Openlayers ได้อย่างไร?


9

ฉันสามารถระบุคุณสมบัติที่เลือกบนแผนที่ของฉันโดยใช้บรรทัดต่อไปนี้:

vector_layer.selectedFeatures

ฉันต้องการยกเลิกการเลือกคุณสมบัตินี้โดยใช้ฟังก์ชั่นแบบสแตนด์อโลน (ไม่ใช่ตัวจัดการเหตุการณ์) ฉันลองใช้ฟังก์ชั่นunselect()แล้วunselectAll()ไม่สำเร็จและไม่พบตัวอย่างของวิธีการนี้

ฉันทราบว่าการคลิกที่วัตถุที่เลือกสามารถนำไปunselectใช้ได้ ในกรณีนี้ฉันต้องการโซลูชันแบบเป็นโปรแกรม


ไม่ใช่สิ่งที่ฉันพยายามทำ แต่unSelectมีการพูดถึงปัญหาที่นี่: github.com/openlayers/openlayers/pull/486
djq

ขอบคุณสำหรับคำแนะนำ ฉันเห็นสิ่งเหล่านี้และพยายามปรับให้เข้ากับชั้นของกริด เท่าที่ฉันสามารถบอกได้ทุกตัวอย่างสำหรับการเลือกคุณสมบัติที่เกี่ยวข้องกับการสร้างคุณสมบัติก่อน ฉันยังไม่ได้เห็นตัวอย่างการทำงานที่มีการโหลดเลเยอร์ที่มีอยู่และผู้ใช้เลือกคุณสมบัติจากเลเยอร์นี้ ฉันเริ่มคิดว่า selectFeature ใช้ได้เฉพาะกับเวกเตอร์ที่คุณสร้างได้ทันที ฉันหวังว่านี่จะไม่เป็นจริงหรืออย่างอื่นที่ฉันมีปัญหา ;)
2378729

คำตอบ:


13

OpenLayers 2: คุณสามารถยกเลิกการเลือกคุณสมบัติได้ด้วยวิธียกเลิกการเลือกและไม่เลือกทั้งหมดของตัวควบคุม SelectFeature:

selectControl = new OpenLayers.Control.SelectFeature(vectorLayer);
...
map.addControls([selectControl]);
selectControl.activate();

// unselect any specific feature...
selectControl.unselect(vectorLayer.features[0]);
// ...or all features
selectControl.unselectAll();

หากวิธีนี้ใช้ไม่ได้อาจมีข้อผิดพลาดในรหัสของคุณ

นี่คือซอ: http://jsfiddle.net/dHxnh/1/


ฉันไม่เห็นว่าในเอกสารประกอบ ... แต่ใช้งานได้!
pakman

1

Openlayers ยกเลิกการเลือกวัตถุ - วิธีการต่าง ๆ

ใช้ปุ่ม Shift เพื่อเลือกคุณสมบัติหลายอย่าง ใช้ปุ่ม ctrl เพื่อสลับการเลือกคุณสมบัติในแต่ละครั้ง หมายเหตุ: ตัวเลือก "การคลิก" จะไม่มีผลเมื่อเลือก "โฮเวอร์"

http://openlayers.org/dev/examples/select-feature.html

คลิกเพื่อยกเลิกการเลือกคุณสมบัติ


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