ทริกเกอร์คลิกเหตุการณ์บนแผนที่แผ่นพับ?


15

เป็นไปได้หรือไม่ที่จะทำให้เกิดเหตุการณ์การคลิกที่ละติจูด / ลองจิจูดบนแผนที่แผ่นพับ?

ฉันต้องการให้ป๊อปอัปปรากฏขึ้นซึ่งเกี่ยวข้องกับจุด ณ สถานที่หนึ่ง

ฉันลองหลายชุดmap.fireEvent('click', latLon)แล้วmap.fire('click', latLon)แต่ไม่พบตัวอย่างหรือข้อมูลอ้างอิงที่อธิบายวิธีการนี้ นี่เป็นสิ่งที่สามารถทำได้หรือไม่?

วิธีการหนึ่งที่ผมได้พยายาม (และที่ทำงาน) layer[id].fireEvent('click')คือการระบุวัตถุในชั้นใบปลิวและเรียกเหตุการณ์คลิกใช้ อย่างไรก็ตามสิ่งนี้ต้องการให้ฉันรู้ ID วัตถุและฉันต้องการให้สามารถใช้ lat / lon เพื่อเริ่มการคลิกนี้


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

คำตอบ:


21

ฉันคิดว่าคุณกำลังคิดว่ามันซับซ้อนกว่าที่คุณคิด!

ลองสิ่งนี้:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

ที่มาจากเอกสารที่ดีเยี่ยม

ฉันรู้ว่าคุณต้องการทำอะไรตอนนี้ นี่คือวิธีที่คุณสามารถเปิดป๊อปอัพในตำแหน่งที่คลิกโดยพลการ:

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

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


ขอบคุณสำหรับคำแนะนำ คุณรู้หรือไม่ว่าเป็นไปได้ที่จะเรียกใช้สิ่งนี้โดยไม่สร้างป๊อปอัป ในกรณีของฉันฉันเพิ่ม 70 คะแนนลงในแผนที่ (ผูกป๊อปอัพ) และต้องการเรียกหนึ่งในป๊อปอัปเหล่านี้ในภายหลัง
djq

คุณสามารถสร้างป๊อปอัปทั้งหมดเก็บไว้ที่ไหน / ที่ไหนแล้วก็เปิดมันบนแผนที่ อ่านเอกสารและทดลองใช้ ฉันไม่เข้าใจสิ่งที่คุณกำลังพยายามทำ บางทีคุณควรแก้ไขคำถามเพื่อกำหนดจุดสิ้นสุดของคุณ?
Alex Leith

ฉันเข้าใจวิธีเปิดป๊อปอัปหากเก็บไว้ในอาร์เรย์ฉันต้องการลองเปิดโดยดูจากการคลิกที่สถานที่บนแผนที่ ฉันจะพยายามทำให้คำถามนี้ชัดเจนยิ่งขึ้น
djq

ดังนั้นคุณต้องการเปิดป๊อปอัพที่ใกล้ที่สุดเพื่อคลิก? หรือเปิดป๊อปอัปที่ตำแหน่งที่ถูกคลิก และคุณไม่ต้องการเครื่องหมาย
Alex Leith

ฉันต้องการเปิดป๊อปอัปที่ตำแหน่งที่ถูกคลิกและฉันไม่ต้องการเครื่องหมาย
djq

1

ฉันกำลังใช้คำตอบอื่น ๆในแผนที่แผ่นพับเพื่อให้ผู้ใช้ส่งคำขอคุณลักษณะตามตำแหน่งที่คลิกในแผนที่จากนั้นเปิดแบบฟอร์ม google ที่กรอกไว้ล่วงหน้าโดยมีความยาว lat จากตำแหน่งนั้น จุดเหล่านั้นจะปรากฏบนแผนที่โดยใช้แผ่นชีท / โต๊ะ ฉันเพิ่ม map.hasLayer (เลเยอร์คำขอของฉัน) ดังนั้นผู้ใช้จะไม่เห็นป๊อปอัปเสมอเมื่อคลิกแผนที่:

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.