我正在使用Google地图开发一个应用,该应用应在地图上显示多个类别。现在,我希望可以从多个类别添加标记,并在必要时将其删除。
我设法弄清楚了整个事情。至少,几乎...我在删除类别标记方面遇到了麻烦。为了清楚起见,我在jsfiddle上创建了一个现场演示。
因此,这是我尝试执行的操作:
码
首先,我初始化地图,等等。(但这与这里无关)。然后,我在地图上添加标记:
for(i in markers){
var marker = new google.maps.Marker({
map: map,
draggable: false,
position: new google.maps.LatLng(markers[i].latitude, markers[i].longitude),
visible: true,
data: category
});
newMarkers.push(marker);
}
如您所见,对象中有“ data:category”。这是不是Google Maps api的东西,但是它没有给我任何错误,并且可以在我想删除标记时搜索数组。这是removeMarker函数:
function removeMarkers(category)
{
for(i in newMarkers) {
if(newMarkers[i]['data'] == category){
count ++;
newMarkers[i].setMap(null);
newMarkers.splice(i, 1);
}
}
}
它确实删除了标记,但并非全部删除...
有人能解决我的问题吗?
LIVE DEMO
提前致谢,
海伦娜·S。
最佳答案
似乎问题在于您正在迭代newMarkers数组,同时从中删除元素。
试试这个吧。它仅将数组中已删除的标记值设置为null,然后在循环之后过滤这些null值:
for(i in newMarkers) {
if(newMarkers[i]['data'] == category){
count ++
newMarkers[i].setMap(null);
newMarkers[i] = null;
}
}
newMarkers = newMarkers.filter(function(val){ return !!val; });
http://jsfiddle.net/GJUcy/
关于javascript - 从 map 上删除标记(Google Maps API v3),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16003836/