Memicu acara klik pada peta Leaflet?

14

Apakah mungkin untuk membuat acara klik terjadi pada lat / lon tertentu pada peta selebaran?

Saya ingin membuat munculan yang dikaitkan dengan titik di lokasi tertentu.

Saya telah mencoba beberapa kombinasi map.fireEvent('click', latLon)dan map.fire('click', latLon)tetapi saya tidak dapat menemukan contoh atau referensi yang menggambarkan pendekatan ini. Apakah ini hal yang bisa dilakukan?

Salah satu pendekatan yang saya coba (dan yang berhasil) adalah mengidentifikasi objek di lapisan selebaran dan untuk memicu peristiwa klik menggunakan layer[id].fireEvent('click'). Namun, ini mengharuskan saya mengetahui ID objek dan saya ingin dapat menggunakan lat / lon untuk memicu klik ini.


Saya ingin membuka sembulan di lokasi yang diklik dan saya tidak ingin menambahkan penanda atau menambahkan sembulan baru di lokasi ini. Apa yang saya coba lakukan adalah menjalankan event klik pada lat / lon tertentu di mana suatu titik sudah ada dan memicu popup yang sudah ada.

djq
sumber

Jawaban:

21

Saya pikir Anda berpikir itu lebih kompleks daripada yang Anda pikirkan!

Coba ini:

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);

Bersumber dari dokumentasi yang sangat baik .

Saya tahu apa yang ingin Anda lakukan sekarang. Inilah cara Anda dapat membuka sembulan di lokasi yang diklik sembarang:

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);        
    });

Suntingan terakhir: Saya serius berpikir bahwa jika Anda ingin membuat acara 'klik' untuk mencapai sesuatu yang perlu diperhatikan desain Anda. Jika Anda benar-benar ingin melakukannya, sepertinya dimungkinkan dalam javascript . Itu bukan pertanyaan SIG.

Alex Leith
sumber
Terima kasih atas sarannya. Apakah Anda tahu apakah mungkin untuk memicu ini, tanpa membuat popup? Dalam kasus saya, saya menambahkan 70 poin ke peta (mengikat popup), dan ingin memicu salah satu popup ini nanti.
djq
Anda dapat membuat semua popup, menyimpannya entah di mana / di mana, lalu buka saja di peta. Baca di dokumentasi dan coba. Saya tidak mengerti apa yang Anda coba lakukan. Mungkin Anda harus mengedit pertanyaan Anda untuk menentukan titik akhir Anda?
Alex Leith
Saya mengerti cara membuka popup jika disimpan dalam array, saya ingin mencoba membukanya berdasarkan mengklik di suatu tempat di peta. Saya akan mencoba menjelaskan hal ini dalam pertanyaan.
djq
Jadi, Anda ingin membuka popup terdekat dengan sekali klik? Atau buka munculan di lokasi yang diklik? Dan Anda tidak ingin spidol?
Alex Leith
Saya ingin membuka munculan di lokasi yang diklik dan saya tidak ingin spidol.
djq
1

Saya menggunakan jawaban lain di peta selebaran untuk memungkinkan pengguna mengirimi saya permintaan fitur berdasarkan lokasi yang diklik di peta, yang kemudian membuka formulir google yang sudah diisi sebelumnya dengan lat panjang dari posisi itu. Poin-poin tersebut kemudian ditampilkan di peta menggunakan sheetee / tabletop. Saya menambahkan map.hasLayer (lapisan permintaan saya) sehingga pengguna tidak selalu melihat sembulan ketika peta diklik:

    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);
    }
});
malcolm
sumber