0

这个问题是这个的“第2集”: 原始问题

你好 !

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

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

提醒一下,我有一张 Leaflet 地图,它使用 MarkerCluster 来显示 ~36.000 个标记。每个标记都必须有一个包含许多信息的弹出窗口(在点击时出现)。

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

现在,在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);

 }

我需要一些帮助,请

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

提前致谢

4

0 回答 0