代码之家  ›  专栏  ›  技术社区  ›  Julien

Google地图(v3)信息窗口一直在同一个标记上打开

  •  11
  • Julien  · 技术社区  · 14 年前

    我创建了几个gmarker(从jquery“load”函数加载的json数据中),在所有的gmarker上,我添加了一个事件监听器来打开我之前在标记上创建的信息窗口对象,然后将它们全部添加到映射中。

    问题是信息窗口总是在同一个标记上打开。 我以前都有过这样的工作,我不知道问题在哪里…变量的范围?有什么愚蠢的错误吗?

    我上传了一个 example ,这是一个 shortcut to the javascript file

    代码:

        var map;
        var infowindow;
        $(document).ready(function() {
    
            var myLatlng = new google.maps.LatLng(47.15984,2.329102);
          var myOptions = {
            zoom: 6,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.HYBRID,
            scrollwheel: false
          }
    
          map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
          infowindow = new google.maps.InfoWindow({content:'<p>Test</p>'});
    
            $.getJSON("data.json", function(data) {
    
                var markers = [];
                for (var i = data.length - 1; i >= 0; i--){
                    var latLng = new google.maps.LatLng(data[i].lat, data[i].lng);
                  var marker = new google.maps.Marker({position: latLng});
    
                  google.maps.event.addListener(marker, 'click', function() {
                        infowindow.open(map,marker);
                  });
    
                  markers.push(marker);
                };
    
                for (var j = markers.length - 1; j >= 0; j--){
                    markers[j].setMap(map);
                };
    
            });
        });
    
    1 回复  |  直到 7 年前
        1
  •  28
  •   cambraca    14 年前

    变化

    infowindow.open(map,marker);
    

    infowindow.open(map,this);