这个问题是“第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 © <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);
}
我需要一些帮助,请
如果您希望我更具体或添加其他提取物,请告诉我们!
提前致谢