Javascript 谷歌地图API v3-infoWindows都有相同的内容

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信息窗口; 函数显示结果(开始、计数){ 如果(开始==未定义){ 开始

我在infoWindows和谷歌地图API v3上遇到了问题。 起初,我遇到了其他人在打开新窗口时关闭信息窗口的问题。 我认为通过预先定义“infowindow”已经解决了这个问题。现在,当我单击一个新标记时,它们会关闭,但内容是相同的。 我应该如何重新构造代码,以确保每次内容都是正确的,并且在给定时间只打开一个信息窗口

谢谢大家!

保罗

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