【发布时间】:2013-06-26 20:12:56
【问题描述】:
我需要创建一些标记弹出窗口,在地图上显示来自不同 ajax 请求的信息。为了进行第二次通话,我使用了从第一次通话中获得的用户 ID。第二次通话中的信息显示良好,但所有弹出窗口都显示相同的名称,第一次通话中的最后一项,为什么会发生这种情况,有人可以帮我吗?非常感谢提前!!!。
$.getJSON('url', function (data) { // first call
for (var i = 0; i < data.length; i++) {
var name= data[i].name;
var location= data[i].location;
var userID = data[i].userID;
var myIcon= data[i].icon;
var marker = new L.Marker(location, {title: name, icon: myIcon});// create the marker
$.getJSON('https://api.site.com/data/'+userID+'',(function(marker){ // second call using userID
return function(data2) {
var info1 = data2.response.tips.items[0].text;
var info2 = data2.response.tips.items[1].text;
marker.bindPopup("<div class='popup'>" + name +"</br>"+ info1 +"</br>"+ info2 + "</div>", {maxWidth: '600'}) // create the popup and add it to the marker
}
})(marker)
);
shops.addLayer(marker); // add marker to map layer
}
【问题讨论】:
-
您要么必须从
marker获取name,要么将name添加到闭包中的变量中。 -
对不起@Barmar 但是,你能解释一下吗?谢谢!!
-
我想你会明白的,因为你已经为
marker做了这个。我已经发布了一个显示它的答案。 -
效果很好!非常感谢@Barmar 的帮助,这是学校的项目。请让我问你,我必须在另外两个电话的弹出窗口中添加信息,我必须把它们放在哪里?我的老师帮我解决了这个问题,所以我不太明白代码,非常感谢您的帮助!
-
很难确定没有看到你需要做的一切。我建议你研究它是如何工作的,并尝试自己解决它,这就是你学习和理解的方式。
标签: javascript ajax jquery mapping getjson