javascript - Google Maps API v3 - infoWindows 均具有相同的内容

标签 javascript google-maps-api-3

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

谢谢!

保罗

var allLatLngs = new Array();
var last = 0;
var infowindow;

function displayResults(start, count){
    if(start === undefined){
        start = last;
    }
    if(count === undefined){
        count = 20;
    }
    jQuery.each(jsresults, function(index, value) {
        if(index >= start && index < start+count){
            var obj = jQuery.parseJSON(value);
        $("#textresults").append(index + ": <strong>" + obj.name + "</strong> " + Math.round(obj.distanz*100)/100 + " km entfernt" + "<br/>");

            var myLatlng = new google.maps.LatLng(obj.geo_lat, obj.geo_lon);
            allLatLngs.push(myLatlng);

        var contentString = '<strong>'+obj.name+'</strong>';

        infowindow = new google.maps.InfoWindow({
            content: contentString
        });


            var marker = new google.maps.Marker({
                  position: myLatlng,
                  //title:"Hello World!"
              });
            marker.setMap(map);

            google.maps.event.addListener(marker, 'click', function() {
            if (infowindow) { infowindow.close(map,marker); }
              infowindow.open(map,marker);
            });
        }
    });

    last = start+count;  

最佳答案

已更新

您正在调用

infowindow.open(map,marker);

在 jQuery.each 迭代中,因此,我认为它将调用迭代中的最后一项。 修改您的代码,以便您在 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()”时,我正在使用 javascript closure 。我刚刚将这个闭包用于其他东西。我已经摆脱了之前答案中的其他变体。

关于javascript - Google Maps API v3 - infoWindows 均具有相同的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889416/

相关文章:

javascript - 如何在Angular JS中获取点击行的数据

javascript - TypeError : $(. ..).tooltipster 不是函数

javascript - 创建美国谷歌地图,没有标记,但每个州都有自己的标记(边界)

jquery - GMaps.js : Trace route between two markers set by geocoding

google-maps - 谷歌地图信息窗口显示不正确

javascript - 更改 jQuery 中当前元素的背景

javascript - 唯一随机数生成器问题

javascript - 防止javascript函数意外使用全局窗口

javascript - Sencha Touch : Can't get map object from Ext. map 提供给谷歌方向服务

java - 如何在java中使用谷歌地理编码?