Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用传单和Ajax更新弹出式内容(第2部分)_Javascript_Ajax_Leaflet_Leaflet.markercluster - Fatal编程技术网

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

Javascript 如何使用传单和Ajax更新弹出式内容(第2部分),javascript,ajax,leaflet,leaflet.markercluster,Javascript,Ajax,Leaflet,Leaflet.markercluster,这个问题是本书的“第二集”: 嗨 我的地图还是有问题。事实上,我相信上面链接中的解决方案解决了我的问题,但我发现了另一个问题 我的代码和目标与这个问题的“第一集”几乎相同 作为提醒,我有一张传单地图,它使用MarkerCluster显示约36.000个标记。每个标记必须有一个包含许多信息的弹出窗口(单击时显示) 由于一次获取的信息太多(我的意思是一次获取所有点和所有信息),我想获取纬度、经度和单个ID,以便在地图上显示标记。接下来,当单击弹出窗口时,脚本使用每个标记包含的单个ID发出Ajax请求

这个问题是本书的“第二集”:

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

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

作为提醒,我有一张传单地图,它使用MarkerCluster显示约36.000个标记。每个标记必须有一个包含许多信息的弹出窗口(单击时显示)

由于一次获取的信息太多(我的意思是一次获取所有点和所有信息),我想获取纬度、经度和单个ID,以便在地图上显示标记。接下来,当单击弹出窗口时,脚本使用每个标记包含的单个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);

 }
函数makeMap(pointsToInsert){
如果(映射类型!=“未定义”){
map.off();
map.remove();
}
var tileLayer=L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/streets-v9/tiles/256/{z} /{x}/{y}?访问_令牌='{
属性:“地图数据©;贡献者,图像©”,
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来自之前的PHP脚本调用
var markers=L.markerClusterGroup();
对于(变量i=0;i
我需要一些帮助

如果你想让我更具体或添加其他摘录,请让我知道


提前感谢

您的问题很简单。只需替换这一行:
var data=marker.getPopup().getContent()带有:
var data=this.getPopup().getContent()出现此问题是因为var标记对应于您附加到映射的最后一个标记。如果你需要更多的帮助,请说出来。真不敢相信这么简单,非常感谢!正如我所说,我缺乏jss方面的技能。。。再次感谢