Leaflet: Dokumentasi tentang cara mengisi konten popup melalui ajax

Dibuat pada 27 Agu 2012  ·  10Komentar  ·  Sumber: Leaflet/Leaflet

Apakah itu didokumentasikan di mana saja cara mengisi konten popup penanda setelah mengkliknya?

Juga, apakah mungkin untuk mengisi konten popup untuk semua penanda yang terlihat? Saya menggunakan Leaflet.markercluster dan akan lebih baik untuk hanya memuat konten popup ketika saya cukup memperbesar untuk melihat penanda individual.

Saya tidak terlalu baik dengan js dan pencarian saya tidak menghasilkan apa-apa tetapi saya merasa bahwa apa yang saya coba lakukan adalah mungkin ... ?

Terima kasih lagi!

Komentar yang paling membantu

Ini direferensikan dengan baik di google, jadi ini untuk orang yang mencari:

  • Anda tidak perlu secara manual membuat popup dan memanggil map.openPopup; jika Anda memiliki penanda, Anda dapat menggunakan bindPopup() dan getPopup() jika Anda mau.
  • jangan lupa untuk memanggil popup.update() http://leafletjs.com/reference.html#popup -update

Berikut adalah contoh kerja dengan leaflet 0.7.3:

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup("Loading...")
marker.on('click', function(e) {
    var popup = e.target.getPopup();
    var url="DYNAMIC_CONTENT_URL";
    $.get(url).done(function(data) {
        popup.setContent(data);
        popup.update();
    });

Semua 10 komentar

Jika Anda membuat popup secara eksplisit maka Anda dapat mengatur kontennya:

var popup = new L.Popup();
popup.setLatLng(latlng);
popup.setContent('seme content');
map.openPopup(popup);

http://leaflet.cloudmade.com/reference.html#popup

Jadi dengarkan acara 'klik' pada penanda Anda (Anda dapat mengatur ini di MarkerClusterGroup). Kemudian ketika dipecat, Anda membuat sembulan dengan pesan pemuatan, memuat konten melalui ajax, lalu setContent di dalamnya ketika kembali.

var group = new L.MarkerClusterGroup();
group.on('click', showMarker);

function showMarker(marker) {
//use marker.layer for the marker IIRC
//Create popup here and fetch content
}

Semoga membantu!

Terima kasih, saya akan mempelajari ini dan menerapkannya!

Ini direferensikan dengan baik di google, jadi ini untuk orang yang mencari:

  • Anda tidak perlu secara manual membuat popup dan memanggil map.openPopup; jika Anda memiliki penanda, Anda dapat menggunakan bindPopup() dan getPopup() jika Anda mau.
  • jangan lupa untuk memanggil popup.update() http://leafletjs.com/reference.html#popup -update

Berikut adalah contoh kerja dengan leaflet 0.7.3:

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup("Loading...")
marker.on('click', function(e) {
    var popup = e.target.getPopup();
    var url="DYNAMIC_CONTENT_URL";
    $.get(url).done(function(data) {
        popup.setContent(data);
        popup.update();
    });

Perhatikan bahwa Anda juga dapat meneruskan fungsi ke bindPopup() . Itu akan dipanggil ketika popup dibuka dan harus mengembalikan String atau HTMLElement . Jadi versi lain dari kode Anda (yang tidak menentukan jenis acara mana yang menyebabkan sembulan terbuka):

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup(function() {
    var el = $('<div/>');

    $.get("DYNAMIC_CONTENT_URL").done(function(data) {
        el.setContent(data);
        popup.update();
    });

    return el;
});

Adakah yang punya contoh kerja langsung tentang ini yang ingin mereka bagikan?

@chriszrc yang menyelamatkan saya dari banyak masalah. Terima kasih sobat

@chriszrc Tidak dapat melakukannya menggunakan data JSON dari API.

Tidak ada popup yang muncul.

Contoh data terlihat seperti ini:
{"datapoint":[{"intensity":92,"latitud":"18.52","longitud":"82.4767"},{"intensity":68,"latitud":"17.7375","longitud":"82.8347"}]}

Saya mencoba menampilkan intensitas di sembulan.

Ini yang saya coba:

```
marker.bindPopup((popup)=>{
var el = document.createElement('div');
el.classList.add("kelasku");
$.getJSON(" http://www.example.com/data ",function(datapoint){
el.innerHTML = '

' + titik data[i].intensitas + '

';
});
 return el;

@kunaldhariwal Anda harus memposting plunkr atau sesuatu, tidak mungkin untuk mengatakan tanpa contoh. Sebagai permulaan, url tempat Anda memuat cuplikan kode ("http://www.example.com/data") tampaknya tidak mengembalikan json- yang valid

@chriszrc Itu adalah contoh URL. Untuk beberapa alasan yang jelas saya tidak dapat mengungkapkan url yang tepat.
Maaf tapi saya akan mencoba mencari tahu sesuatu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat