谷歌地图动态添加标记

5
我想在我的地图上添加动态标记,每个标记都位于经度[i]和纬度[i]处,并且当用户单击标记时,我希望弹出一个窗口,在窗口的url中包含&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

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

1个回答

3
你可以尝试替换这个 -
google.maps.event.addListener(marker[i], 'click', function() {
    window.open('blah.php?id='+id[i],'name','height=1000,width=1000')
});

by this -

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

将监听器封装在闭包中将会以该时间点的状态执行它。 更多详情请参考 - 在循环中添加“click”事件监听器


哦不,太完美了!!你只是忘记在结尾加一个括号。谢谢。 - maggie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接