【发布时间】:2015-07-29 14:41:03
【问题描述】:
我正在尝试创建一个 javascript 函数,该函数将在单击 Google 地图标记时更改其颜色。然后,如果点击了新的标记,它会将旧的标记恢复为原来的颜色并更改新的标记。
这是我的changeMarker(marker, i)函数被调用的地方
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
changeMarker(marker, i);
}
})(marker, i));
这是我的changeMarker() 函数
function changeMarker(marker, i) {
if(lastMarker) {
lastMarker.setMap(null);
console.log("Last Marker Removed");
var position = new google.maps.LatLng(buisnesses[lastID][1], buisnesses[lastID][2]);
marker = new google.maps.Marker({
position: position,
map: map,
title: buisnesses[lastID][0],
icon: ("http://www.googlemapsmarkers.com/v1/0099FF/")
});
console.log("Last Marker Replaced");
}
marker.setMap(null);
console.log("New Marker Removed");
var position = new google.maps.LatLng(buisnesses[i][1], buisnesses[i][2]);
bounds.extend(position);
var newMarker = new google.maps.Marker({
position: position,
map: map,
title: buisnesses[i][0],
icon: ("http://www.googlemapsmarkers.com/v1/D75C37/")
});
console.log("New Marker Created");
lastMarker = newMarker;
lastID = i;
}
因为我找不到任何方法来简单地更改已创建标记的icon 字段,所以我采取了删除标记并在每次需要发生颜色更改时替换它。但是,这种实现给了我非常不一致的结果(第一次按下新标记时从不替换第一个标记,按下时某些标记什么都不做,等等......)。
如果有更简单的方法可以做到这一点,有什么想法吗?我将是第一个承认我不是最擅长 javascript 的人,所以希望有人能指出我在此过程中犯的错误。
谢谢!
【问题讨论】:
-
如果你发布了一个好问题,你不应该删除它。 SO 保留好问题,以便其他人可以搜索和找到它们。