我想从Google地图中删除单个标记。我使用的是版本3 API。我知道如何通过维护markerArray
并为所有人设置map null来删除所有标记。
为了逐个删除,我想创建一个键值对组合。所以我给了一把钥匙并删除了特定的标记。我需要帮助。
以下是我用来标记标记的代码:
function geoCodeAddresses(data) {
var markerInfo = {addressKey: '', marker:''};
for (var i = 0; i < data.length; i++) {
myLocation = data[i];
geocoder.geocode({"address":myLocation}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({map:map, position:results[0].geometry.location});
// checkpoint A
alert(myLocation);
/*
markerInfo.addressKey = myLocation;
markerInfo.marker = marker;*/
//mArray.push(markerInfo);
}
});
}
}
我将搜索addresskey
并从mArray
中移除标记。但是我每次都在地理编码回调方法中得到最后一个值。每次都有一个物体被推动。 var myLocation总是给我数组的最后一个索引的地址。如果我在检查点A提醒它。
我的方法是对的?
答案 0 :(得分:0)
你的问题就在这一行:
mArray.push(markerInfo);
这不会将markerInfo的值推送到您的数组中。它将对markerInfo的引用推送到您的数组中。现在,在循环的下一次迭代中,当您更改markerInfo的值时,它也会更改数组中引用所指向的值。所以你的数组最终会得到所有具有相同值的元素。
请改为尝试:
mArray.push({addressKey:myLocation,marker:marker});
如果这不起作用,那么:
mArray.push({addressKey:data[i],marker:marker});