添加非标准标记属性

时间:2014-06-24 21:50:46

标签: javascript google-maps-markers

要允许用户在地图上删除正确的标记,我需要将每个标记与其数据存储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值对应的元素?那也很尴尬。当然有更好的方法来做到这一点。

1 个答案:

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