Javascript 添加非标准标记特性

Javascript 添加非标准标记特性,javascript,google-maps-markers,Javascript,Google Maps Markers,为了允许用户在地图上删除正确的标记,我需要将每个标记与其数据存储ID(一个字符串)相关联。我原本以为可以将ID设置为整数,并使用标记的现有zIndex属性。这将导致下面创建每个物理标记的代码。(但是,唉,我无法访问整数ID值。) 我不知道如何在google.maps.Marker的原型中添加一个属性来保存ID字符串,我想无论如何,修改这样的原型是不可取的。那么这是如何做到的呢?我是否必须使用zIndex属性作为数组的索引,该数组包含与zIndex值相对应的实际ID作为元素?那也很尴尬。当然有更好

为了允许用户在地图上删除正确的标记,我需要将每个标记与其数据存储ID(一个字符串)相关联。我原本以为可以将ID设置为整数,并使用标记的现有
zIndex
属性。这将导致下面创建每个物理标记的代码。(但是,唉,我无法访问整数ID值。)


我不知道如何在
google.maps.Marker
的原型中添加一个属性来保存ID字符串,我想无论如何,修改这样的原型是不可取的。那么这是如何做到的呢?我是否必须使用
zIndex
属性作为数组的索引,该数组包含与
zIndex
值相对应的实际ID作为元素?那也很尴尬。当然有更好的方法可以做到这一点。

假设您有一个
位置数组

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])

您可以设置例如
marker.id=id
并稍后访问它。您的评论基本上回答了我的问题。但我还是被卡住了,因为我不知道该隐藏哪个点击标记。我知道要从我的google app engine数据存储中删除哪个标记,因为这是
marker.id
的值。我必须问另一个关于隐藏的问题,因为即使@jonathanwilson的回答也并没有将点击的标记和要隐藏的标记相关联,我认为,因为
hideMarkersWithIdIn()
要求索引而不是标记点击作为参数。
hideMarkersWithIdIn([1,5,3])