Javascript 谷歌地图API v3-infoWindows都有相同的内容
我在infoWindows和谷歌地图API v3上遇到了问题。 起初,我遇到了其他人在打开新窗口时关闭信息窗口的问题。 我认为通过预先定义“infowindow”已经解决了这个问题。现在,当我单击一个新标记时,它们会关闭,但内容是相同的。 我应该如何重新构造代码,以确保每次内容都是正确的,并且在给定时间只打开一个信息窗口 谢谢大家! 保罗Javascript 谷歌地图API v3-infoWindows都有相同的内容,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我在infoWindows和谷歌地图API v3上遇到了问题。 起初,我遇到了其他人在打开新窗口时关闭信息窗口的问题。 我认为通过预先定义“infowindow”已经解决了这个问题。现在,当我单击一个新标记时,它们会关闭,但内容是相同的。 我应该如何重新构造代码,以确保每次内容都是正确的,并且在给定时间只打开一个信息窗口 谢谢大家! 保罗 var allLatLngs=new Array(); var last=0; var信息窗口; 函数显示结果(开始、计数){ 如果(开始==未定义){ 开始
var allLatLngs=new Array();
var last=0;
var信息窗口;
函数显示结果(开始、计数){
如果(开始==未定义){
开始=最后;
}
如果(计数==未定义){
计数=20;
}
每个(jsresults、函数(索引、值){
如果(索引>=开始&索引<开始+计数){
var obj=jQuery.parseJSON(值);
$(“#textresults”).append(index+”:“+obj.name+”“+Math.round(obj.distanz*100)/100+“km entfernt”+“
”);
var mylatng=new google.maps.LatLng(obj.geo_lat,obj.geo_lon);
所有横向推力(myLatlng);
var contentString=''+obj.name+'';
infowindow=新建google.maps.infowindow({
内容:contentString
});
var marker=new google.maps.marker({
职位:myLatlng,
//标题:“你好,世界!”
});
marker.setMap(map);
google.maps.event.addListener(标记'click',函数(){
if(infowindow){infowindow.close(map,marker);}
信息窗口。打开(地图、标记);
});
}
});
最后=开始+计数;
已更新
你在打电话吗
infowindow.open(map,marker);
因此,我认为它将调用迭代中的最后一项。
修改您的代码,以便在jQuery.each迭代中得到它
var curItem = 1;
google.maps.event.addListener(aMarker, "click", function(idx, theContent) {
return function() {
alert(idx); //Should print 1 marker1, 2 for marker 2, to show it's ok.
//Your stuff...
if (infowindow) {
infowindow.close(map,marker);
}
infowindow.setContent(theContent);
infowindow.open(map,marker);
}
} (curItem++, contentString)
);
当您看到“return function()”时,我正在使用一个。我刚刚将此闭包用于其他内容。我在以前的回答中删除了以前的其他变体。更新了 你在打电话吗
infowindow.open(map,marker);
因此,我认为它将调用迭代中的最后一项。
修改您的代码,以便在jQuery.each迭代中得到它
var curItem = 1;
google.maps.event.addListener(aMarker, "click", function(idx, theContent) {
return function() {
alert(idx); //Should print 1 marker1, 2 for marker 2, to show it's ok.
//Your stuff...
if (infowindow) {
infowindow.close(map,marker);
}
infowindow.setContent(theContent);
infowindow.open(map,marker);
}
} (curItem++, contentString)
);
当您看到“return function()”时,我使用的是一个。我刚刚将此闭包用于其他内容。我在以前的回答中删除了以前的其他变体。Hi johncatfish,谢谢您的回答。但是,恐怕我不太明白如何使用它。我已替换了信息窗口。打开(地图、标记)用你的代码,但它只会抛出错误。请你再解释一点好吗?谢谢你,PaulHi johncatfish,谢谢你的回答。但是,恐怕我不太明白如何使用它。我已经替换了信息窗口。用你的代码打开(地图、标记),但它只会抛出错误。你能再解释一点吗?谢谢你,Paul