【问题标题】:javascript google maps api v3 markers and infowindowjavascript google maps api v3 标记和信息窗口
【发布时间】:2012-05-08 00:12:32
【问题描述】:

我对 google maps api v3 和带有 infowindow 的标记有疑问。

以下部分代码集标记,但无法通过单击访问信息窗口。

var infowindow = new google.maps.InfoWindow();
var marker, i;
function setMarker(){
 for (i = 1; i < 240; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(line[i][0], line[i][1]),
    map: map2
  });
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent("Test");
infowindow.open(map,marker);
});
}
}

我希望有人可以帮助我:)?

【问题讨论】:

  • (1) JavaScript 控制台有错误吗? (2) Don't create a function in a loop. 最终只会关闭循环中的最后一个值。
  • 您在map: map2 上设置标记并在infowindow.open(map,marker); 上添加点击侦听器,这是个问题吗?

标签: javascript google-maps


【解决方案1】:

如果一切正常,那么变量范围问题infowindow.open(map, marker)应该是map2

var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 1; i < 240; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(line[i][0], line[i][1]),
    map: map2
  });

  google.maps.event.addListener(marker, 'click', (function(marker) {
    return function() {
      infowindow.setContent("Test");
      infowindow.open(map2, marker);
    }
  })(marker));
}

【讨论】:

    【解决方案2】:

    也许这就是问题所在:

    infowindow.open(map2,marker);
    

    你在哪里声明map2?什么是map

    【讨论】:

      【解决方案3】:

      如果您有如下位置数组

      var locations = [
          [33.890542, 150.274856],
          [36.923036, 152.259052],
          [38.028249, 154.157507]
      ];
      

      那么你可以使用下面的代码

      function initialize() {
          var myLatlng = new google.maps.LatLng(locations[0][0], locations[0][1]);
          var myOptions = {
              zoom: 4,
              center: myLatlng,
              mapTypeId: google.maps.MapTypeId.ROADMAP
          }
          var map = new google.maps.Map(document.getElementById("map"), myOptions);
      
          for(var i=0;i<locations.length;i++)
          {
              var latlng=new google.maps.LatLng(locations[i][0], locations[i][1]);
              var marker = new google.maps.Marker({
                  position: latlng,
                  map: map,
                  title: "marker : "+(i+1)
              });
          }     
      }
      google.maps.event.addDomListener(window, 'load', initialize);
      

      Working Example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        • 2013-08-14
        • 2012-06-06
        • 2012-05-27
        • 2011-06-22
        • 2012-03-17
        • 2014-02-18
        相关资源
        最近更新 更多