Брошюра по клику возвращает данные, основанные на кликнем маркере - PullRequest
1 голос
/ 06 мая 2019

проблема в том, что я не могу получить данные в соответствии с маркером, по которому щелкнул.

for(i in data) {
    var title = data[i].title,
    id = data[i].id,      
    position = data[i].position,      
    kriteria = data[i].data.kriteria,     
    iconUrl =  data[i].icon.url,
    pa_judul = data[i].data.pa_judul,
    marker = new L.Marker(new L.latLng(position), 
    {

        icon:  L.icon({
            iconUrl:   iconUrl,
        })

    }, 
    {title: title},

    ).addTo(map);

    marker.bindPopup('ID: '+ id ).on('click', function(e) {
        console.log(data);
        $('#ModalDetail').modal('show').on('shown.bs.modal', function(e) {
        });
    });
    markersLayer.addLayer(marker);
}

console.log (data) возвращает весь массив enter image description here

но когда я перехожу на console.log (data [i]);я получил неопределенное сообщение enter image description here

, и если я перехожу на console.log (data [0]) или data[1] и data[2], результаты не являются ошибкой, и я могу получитьданные

enter image description here

только если для marker.bindpopup это работает нормально, но для onclick не работает.enter image description here

Вы можете мне помочь?Мне просто нужно получить данные от кликнувшего маркера.

1 Ответ

1 голос
/ 07 мая 2019

попробуйте тоже использовать это

for(i in data) {
    var title = data[i].title,
    id = data[i].id,      
    position = data[i].position,      
    kriteria = data[i].data.kriteria,     
    iconUrl =  data[i].icon.url,
    pa_judul = data[i].data.pa_judul;

    var marker = new L.Marker(new L.latLng(position), 
    {
      icon: L.icon({
        iconUrl: iconUrl,
      }),
      title: title
    }
    ).addTo(map);
    marker.myID = i;

    marker.bindPopup('ID: '+ id ).on('click', function(e) {
      var i = e.target.myID;
      console.log(data[i]);
      $('#ModalDetail').modal('show').on('shown.bs.modal', function(e) {
      });
    });
    markersLayer.addLayer(marker);
}
...