Google地图动态添加标记

时间:2013-08-01 08:51:28

标签: javascript google-maps

我想在我的Map中添加动态标记,其中每个都位于经度[i]和纬度[i],我想要在用户点击标记时打开一个弹出窗口,在网址中的哪个位置窗口& id = id [i]。

我尝试使用以下内容:

  <script type="text/javascript">
function initialize() {
var mapOptions = {
zoom: 5,
center: new google.maps.LatLng(48, 2),
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);

for (var i = 0; i < id.length; i++) {
var position = new google.maps.LatLng(latitude[i],longitude[i]);
marker[i] = new google.maps.Marker({
  position: position,
  map: map
});

marker[i].setTitle("pv");
google.maps.event.addListener(marker[i], 'click', function() {
window.open('blah.php?id='+id[i],'name','height=1000,width=1000')
});

}
}

google.maps.event.addDomListener(window, 'load', initialize);
  </script>

它似乎不起作用,因为当点击标记时,将调用函数addListener,此时i = id.length

我想要的是标记[0]打开id [0]的窗口,标记[1]的id [1]等...

1 个答案:

答案 0 :(得分:3)

你能尝试替换吗 -

google.maps.event.addListener(marker[i], 'click', function() {
    window.open('blah.php?id='+id[i],'name','height=1000,width=1000')
});

由此 -

(function (i) {
    google.maps.event.addListener(marker[i], 'click', function() {
        window.open('blah.php?id='+id[i],'name','height=1000,width=1000')
    });
})(i);

在闭包中包装侦听器将使用该时间点的状态执行它。 有关详情,请查看此内容 - adding 'click' event listeners in loop