Leaflet: Buka Popup Otomatis pada setiap penanda

Saya mengikuti snakeIn IvanSanchez untuk menggambar setiap penanda setelah setiap polyline.

Kode telah dimodifikasi seperti

   var markers = [[63.5, 11],
    [40.5, -3.5],
    [51.5, -0.5],
    [52.3, 4.75],
    [39.5, -0.5]];

   var route = L.featureGroup().addTo(map);

   var n = markers.length;

   for (var i = 0; i < n-1; i++) {
        var marker = new L.Marker(markers[i]);
        var line = new L.polyline([markers[i],markers[i+1]]);
        route.addLayer(marker);
        route.addLayer(line);
    };
   route.addLayer(new L.Marker(markers[n-1]));

   map.fitBounds(route.getBounds());

Saya telah mencoba bermain dengan Leaflet popup, di mana saya dapat mengikatpopup untuk setiap penanda. Pertanyaan saya adalah bagaimana caranya agar setiap popup terbuka secara otomatis ketika penandanya digambar, kemudian akan tertutup secara otomatis ketika penanda berikutnya digambar, dan seterusnya...


person Tenz    schedule 12.10.2016    source sumber


Jawaban (1)


Di Leaflet, setiap lapisan (termasuk penanda) memiliki add peristiwa yang menyala ketika ditambahkan ke peta.

Secara internal, kode untuk Leaflet.Polyline.SnakeAnim menghapus dan menambahkan lapisan dari LayerGroup saat animasi meliuk-liuk berjalan; ini berarti bahwa lapisan yang meliuk-liuk akan memicu peristiwa add.

Selain itu, LayerGroup (atau FeatureGroup) yang menjalankan animasi mengular akan memicu peristiwa snake setiap kali lapisan baru dimasukkan. Namun perlu diperhatikan bahwa peristiwa ini tidak memiliki referensi ke lapisan yang baru saja dililitkan.

Jadi sesuatu seperti:

marker1.on('add', function(){
    // Open popup for marker 1
});

Anda juga mengatakan:

maka secara otomatis akan menutup ketika penanda berikutnya digambar,

Pertama-tama bacalah dokumen untuk L.Map.openPopup, lalu:

marker1.on('add', function(){
    map.openPopup( popupForMarker1 );
});
person IvanSanchez    schedule 12.10.2016
comment
--- ‹br/› var marker = new L.Marker(loc, {icon: allIcon}); marker.on('add', function(){ map.openPopup(konten saya); }); var baris = new L.polyline([loc, nextLoc]); rute.addLayer(penanda); rute.addLayer(baris); ‹br/› --- Tampaknya tidak menambahkan penanda lain, tetapi hanya penanda pertama yang ditambahkan dan kemudian menempel di sana. Tidak ada popup yang muncul juga. - person Tenz; 12.10.2016
comment
Bisakah Anda memberi contoh? Ini tidak berfungsi untuk saya, dan fungsi SnakeIn berhenti. - person Tenz; 12.10.2016
comment
Ini tidak benar-benar berhasil. Saya telah mencoba seperti yang Anda katakan. Tidak ada popup yang muncul ketika setiap penanda digambar pada fungsi ular. - person Tenz; 13.10.2016