如何使用传单和Ajax更新弹出内容(第2部分)

时间:2017-05-31 09:18:24

标签: javascript ajax leaflet leaflet.markercluster

这个问题是“第2集”: Original question

嗨!

我的地图仍然有问题。事实上,我相信上面链接中的解决方案已经解决了我的问题,但我想出了另一个问题。

我的代码和我的目标几乎与这个问题的“第1集”相同。

提醒一下,我有一张Leaflet地图,它使用MarkerCluster来显示〜36.000个标记。每个标记必须有一个Popup(显示在onclick上),其中包含许多信息。

由于他们一次获得太多信息(我的意思是一次获得所有点数和所有信息),我有想法获得纬度,经度和单个ID以显示标记地图。接下来,当单击Popup时,脚本会使用每个标记包含的单个ID发出Ajax请求以从数据库获取信息。

目前,在 maximkou 的帮助下,我可以实现这一目标。我的问题是,只考虑最后一个ID,因此它总是请求相同的ID并始终显示相同的信息(这不是我尝试做的)。

我尝试了很多东西(比如在地图上获取所有标记,尝试将标记放在数组上等)但我无法弄清楚如何使其工作。

我认为这不可能(但可能是这样),我认为我缺乏Javascript技能。

如果您有其他解决方案或想法,我将很乐意对其进行测试!

我现在将向您展示我当前代码的摘录:

function makeMap(pointsToInsert){
    if (typeof map != 'undefined') {
        map.off();
        map.remove();
    }

    var tiles=L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/streets-v9/tiles/256/{z}/{x}/{y}?access_token=', {
        attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
        maxZoom: 20,
    }),


    latlng = L.latLng(48.8557, 2.3600);
    var map = L.map('map', {center: latlng, zoom: 9, zoomControl:false, layers: [tiles]});
    var arr = JSON.parse(pointsToInsert); //pointsToInsert come from a PHP script call before
    var markers = L.markerClusterGroup();

    for (var i = 0; i < arr.length; i++) {
        var a = arr[i];
        var ID = a[0];
        var lat  = a[1];
        var lon  = a[2];

        var marker = L.marker(new L.LatLng(lat, lon));
        marker.bindPopup(ID);
        markers.addLayer(marker);
        marker.on('click', function () {
            var datas = marker.getPopup().getContent();
            var popup = L.popup()
                .setLatLng(this.getLatLng())
                .setContent("Loading ...")
                .openOn(map); 
            $.ajax({
                url: 'getInfos.php',
                type : 'POST',
                data : "id=" + datas,
                dataType: 'html',
                success: function (data) {
                    popup.setContent(data);
                },

                error : function(resultat, statut, erreur){
                    alert("Error");
                },
            });     
        });
    }
    map.addLayer(markers);

 }

我需要一些帮助,请

如果您希望我更具体或添加其他提取物,请告诉我们!

提前致谢

0 个答案:

没有答案