วิธีการเปลี่ยนลำดับชั้นของบานหน้าต่างแผนที่แผ่นพับ (ดัชนี z)?


16

Leaflet ยืนยันว่าองค์ประกอบบานหน้าต่างแผนที่มีเลเยอร์ทั้งหมดที่เพิ่มลงในแผนที่ ความแตกต่างระหว่างบานหน้าต่างแผนที่จำนวนมากนั้นเป็นไปตามลำดับชั้นของดัชนีอย่างเคร่งครัด

ฉันต้องการใช้การรวมกันของ lvector.CartoDB เลเยอร์ซึ่งเป็นoverlayPaneเลเยอร์หลักโดยใช้ TileLayer เช่น GeoIQ Acetate-bg และเลเบล

นี่คือการจัดลำดับขององค์ประกอบที่เพิ่มแผนที่:

tileLayer1 = new L.TileLayer();
map.add(tileLayer1);  // add first layer to map

cartoDBLayer1 = new lvector.CartoDB();
cartoDBLayer.setMap(map); // add second layer to map

tileLayer2 = new L.TileLayer();
map.add(tileLayer2);  // add third layer to map

สิ่งที่ส่งคืนคือแผนที่ที่มีเลเยอร์ตามลำดับนี้:

tileLayer1,tileLayer2,cartoDBLayer1

tileLayer1และtileLayer2ตั้งอยู่ในHTMLElement: TilePaneและอยู่ในcartoDBLayer1HTMLElement: overlayPane

มีวิธีใดที่จะบังคับcartoDBLayer1ให้แสดงผลใน TilePane หรือไม่เช่นนั้นจะเรียงตามลำดับของดัชนี z ที่เพิ่มลงในแผนที่ใน ...

กล่าวคือ

z-index[0]:tileLayer1
z-index[1]:cartoDBLayer1
z-index[2]:tileLayer2 

คำตอบ:


17

คุณเคยเห็นปัญหานี้สร้างหนึ่ง repet LeafLet github:

https://github.com/Leaflet/Leaflet/issues/167

พยายามใช้

 addLayer(layer,true);

เพื่อเพิ่มเลเยอร์ไทล์ลงด้านล่าง ฉันกลัวนั่นคือทั้งหมดที่มีและอาร์กิวเมนต์ตัวเลือกที่สองนี้ไม่ได้จัดทำเป็นเอกสาร

อัปเดตเมื่อกันยายน 2014

แผ่นพับในขณะนี้สนับสนุนการตั้งค่าzIndex ขอบคุณ @knutole ในความคิดเห็นที่แจ้งให้เราทราบ


1
+1 สำหรับการกล่าวถึงคุณสมบัติที่ไม่มีเอกสารที่นี่จึงทำการบันทึกไว้ :)
fgysin คืนสถานะโมนิก้า

7
ขณะนี้มีlayer.setZIndex(zIndex)ฟังก์ชั่นให้ใช้งาน
knutole

5
ขอบคุณ - layer.setZIndex(99)ดูเหมือนจะไม่ทำงานให้ฉันด้วยสัญลักษณ์เวกเตอร์ (คุณลักษณะของเส้นและรูปหลายเหลี่ยม) แต่การใช้layer.bringToFront()กลอุบายทำได้
nothingisnecessary
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.