Google地图标记点击按值传递

时间:2012-07-29 23:48:08

标签: javascript google-maps-markers

好吧,这可能是一个令人尴尬的问题,因为它几乎肯定是一个通过价值传递的问题"与传递参考。我正在使用Google Maps JavaScript API v3并尝试填充自己的自定义地图标记。每个标记对应一个带有lat,long和" comment"的位置。关于该位置,并被编码为数组内的对象。但是,虽然在循环中设置标记很好,但是创建一个侦听器来触发动态更新另一个div,其中有关该位置的注释似乎不起作用:

var myList = [ { lat: ..., lon: ..., title: ..., comment: ... }, { object repeats } ];

for (var i = 0; i < myList.length; i++) {
    // bunch of code setting up the marker
    var myMarker = new google.maps.Marker...

    google.maps.event.addListener(myMarker, 'click', function()
    {
        $('myDiv').empty().append(myList[i].comment);
    }

现在,除了addListener中匿名函数内的代码外,一切都有效。似乎.comment没有通过值传递但是通过引用传递(这是有道理的),但结果是.append()不会附加任何东西,因为循环超过了该位置的最后一个索引数组,当调用.append时,它试图清空null或未定义的值。有关如何解决此问题的任何见解?

1 个答案:

答案 0 :(得分:0)

您有关闭问题(或缺少关闭)。

对不起,我在手机上,所以我的回答只是一个链接:  https://developers.google.com/maps/documentation/javascript/events#EventClosures

请参阅Google示例,了解如何在循环中将事件绑定到objets ..

由于