在JavaScript数组和列表中迭代标记

时间:2014-12-08 00:46:00

标签: javascript google-maps-api-3

在这个JSFiddle中,为什么我可以迭代neighborhoods[iterate],但不能将标记position设置为latLng

在第36行中尝试两者。当它设置为neighborhood[iterate]时,标记会掉线。但是当它设置为latLng时,它们都会落在相同的位置。我认为这与迭代有关。

markers.push(new google.maps.Marker({
    position: latLng, //[iterator],

我通过Google地图文档中的各种示例构建了此示例。我怎样才能解决这个问题?我更愿意使用latLng,因为如果需要添加更多信息,它更容易组织。这叫做JavaScript列表吗? neighborhoods是一个JavaScript数组吗?

感谢。

1 个答案:

答案 0 :(得分:0)

addMarker()的调用存在范围问题。

<强> Here is an example fix in jsFiddle

修复一些代码

直接引用该函数并绑定到调用的索引值将有助于解决问题。

for (var i = 0; i < markersList.length; i++) {
    setTimeout(addMarker.bind(this, i), i * 200);
}

更改功能以访问正确的索引。

function addMarker(i) {
    var data = markersList[i]
    var latLng = new google.maps.LatLng(data.latLng[0], data.latLng[1]);
    markers.push(new google.maps.Marker({
        position: latLng,
        map: map,
        draggable: false,
        animation: google.maps.Animation.DROP
    }));
}