我们希望循环使用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');
}
}
但是我们无法找到如何执行循环。
提前致谢。
答案 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,但调整以适合您的堆栈。