谷歌地图API V3:如何向标记添加自定义数据

125

有没有办法为将来的使用在我的标记上添加一些自定义信息。有一些方法可以拥有一个信息窗口和一个标题,但如果我想将该标记与其他信息关联怎么办。

我在页面上显示了其他内容,这些内容依赖于标记,因此当点击标记时,页面上的内容必须根据点击的标记而变化。我希望在单击标记等操作后存储和检索自定义数据。

谢谢

2个回答

230
作为一个 JavaScript 对象,Google Marker 可以添加自定义信息,形式为 key: value,其中 key 是有效的字符串。它们被称为 对象属性,可以用许多不同的方式来处理。值可以是任何合法的东西,像数字或者字符串那样简单,也可以是函数,甚至是其他对象。三种简单的方法:在声明中、点符号表示法和方括号表示法。
var markerA = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(0, 0),
    customInfo: "Marker A"
});

var markerB = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(-10, 0)
});
markerB.customInfo = "Marker B";

var markerC = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(-20, 0)
});
markerC['customInfo'] = "Marker C";

然后以类似的方式检索它:

google.maps.event.addListener(markerA, 'click', function() {
    alert(this.customInfo);
});

3
文档中没有正式规定这种模式。希望他们能够遵循这种模式,而不是在以后的版本中打破它。 - Adam
1
类型“Marker”上不存在属性“customInfo”。 - alehn96
2
如果您正在使用TypeScript,您可能希望使用方括号而不是点来分配此类属性。 - Cocoduf
使用TypeScript,第customInfo: "Marker A"行会出现错误。 为了防止这个错误,你可以在前一行添加: // @ts-ignore - Sebastián de Prada Gato

14

您可以向标记添加自定义属性(但要小心不要与API的属性发生冲突)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接