【问题标题】:Google Maps Adding Markers dynamically谷歌地图动态添加标记
【发布时间】:2013-08-01 08:51:28
【问题描述】:

我想向我的地图添加动态标记,其中每个标记位于经度 [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]打开窗口,id[1]为marker[1]等等...

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    你可以尝试替换这个 -

    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

    【讨论】:

    • 哦不,它是完美的!你只是忘了最后一个括号。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多