gmap3 - 遍历标记

gmap3 - Loop through 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');
  }
}

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

提前致谢。

您必须在创建标记时对其进行哈希处理。有多种方法可以做到这一点,但这里有一个简单的方法可以帮助您入门:

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 将它们缓存在一个对象中。

一旦你有了 hash/array,迭代就很容易了:

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 作为 AJAX 和 php,但要根据您的堆栈进行调整。