添加非标准标记属性

Add a nonstandard marker property

本文关键字:属性 非标准 添加      更新时间:2023-09-26

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

var marker = new google.maps.Marker({ position: point, map: map , title: text, icon: icon,  zIndex: ID});

我不知道如何添加一个属性到google.maps.Marker的原型,将持有ID字符串,我想这是不可取的改变这样的原型,无论如何。那么这是如何做到的呢?我是否必须使用zIndex属性作为包含实际ID作为对应于zIndex值的元素的数组的索引?这也很尴尬。

假设您有一个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])