gmap3 - 循环标记

时间:2015-04-28 12:42:03

标签: javascript google-maps loops markers

我们希望循环使用Google地图上的所有标记。我们想要这样做的原因是:我们想要更改所有标记的图标。

我们编写了一个if语句,用于区分标记和我们点击的标记。

if (marker.id==$i) {
  marker.setIcon('assets/images/website/marker-active.png');
} else {
  if (marker.id != 777) {
    marker.setIcon('assets/images/website/marker.png');
  }
}

但是我们无法找到如何执行循环。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您必须在创建标记时对其进行哈希处理。有很多方法可以做到这一点,但这是一个简单的方法来帮助你开始:

var markers = {};
$.getJSON('marker_data.php').then(function(data) {
    data.forEach(function(record) {
        options = foo; //create the options object for the marker
        markers[record.id] = new google.maps.marker(foo);
    });
});

或者你可以将它们存储在一个数组中,但这可能会使得检索特定标记变得更加困难,我倾向于通过id将它们缓存在一个对象中。

一旦你有了哈希/数组,它很容易迭代:

for (var id in markers) {
    if (id == activeID) {
        marker.setIcon('assets/images/website/marker-active.png');
    } else if (id != 777) {
        marker.setIcon('assets/images/website/marker.png');
    }
}

我的示例假设您在后端使用jQuery for AJAX和php,但调整以适合您的堆栈。