要允许用户在地图上删除正确的标记,我需要将每个标记与其数据存储ID(字符串)相关联。我原本以为我可以将ID设置为整数并使用标记的现有zIndex
属性。这导致下面的代码创建每个物理标记。 (但是,唉,我无法访问整数ID值。)
var marker = new google.maps.Marker({ position: point, map: map , title: text, icon: icon, zIndex: ID});
我不知道如何将属性添加到将保存ID字符串的google.maps.Marker
原型中,我想无论如何都不建议更改这些原型。那怎么办?我是否必须使用zIndex
属性作为数组的索引,该数组包含实际ID作为与zIndex
值对应的元素?那也很尴尬。当然有更好的方法来做到这一点。
答案 0 :(得分:0)
假设您有一个locations
数组:
var markers = [];
for(var i in locations){
var loc = locations[i];
var marker = new google.maps.Marker({
position: loc.point
map: map,
title: loc.text,
icon: loc.icon
});
marker.id = loc.id;
markers.push(marker);
}
你可以这样做,因为每个标记只是一个普通的旧javascript对象。
然后,您可以定义一个隐藏具有特定ID的标记的功能:
function hideMarkersWithIdIn(ids){
var markersToRemove = markers.filter(function(marker){
return ids.indexOf(marker.id) > -1;
});
markersToRemove.forEach(function(marker){
marker.setMap(null);
});
}
可以像
一样使用hideMarkersWithIdIn([1,5,3])