2010-04-22 19 views
7

我正在使用Google Maps v3,并且在服务器端构建了位置数据的json集合。因此,当我收到这些信息时,我遍历该集合并为它们中的每一个创建一个标记对象。如何在标记中存储更多信息?

对于这些标记中的每一个,我将它们与click事件绑定,因此当用户在地图上单击标记时,它会显示一个infoWindow,其中包含与关联位置相关的数据。

我有一个数组来存储从服务器获取的所有位置,该服务器包含检索到的json对象及其相应的标记。

问题是,即使当我有一个数组可以引用或遍历时,我不仅需要在用户点击它们时获取标记对象,还需要存储更多信息的位置对象。

我试图维护这个对象数组,并从调用对象中引用它而没有成功,因为该函数是由标记调用而不是位置对象。所以我想如果有可能在谷歌地图标记对象中存储更多信息,如使用通用字段。

如果需要更多信息,请让我知道。

谢谢!

回答

9

是的,你可以,感谢JavaScript。在这种语言中,对象和哈希表是相同的东西。

这是你如何创造你的标记:

var point = new google.maps.LatLng(40.70, -74.00); 
var myMarker = new google.maps.Marker({ position: point, map: map }); 

这是你怎么能一个额外的属性添加到您的myMarker对象:

myMarker.myNewField = 100; 

中提琴!无需保存单独的相关数据阵列。不需要通用领域。简单地创造一个新的财产名称,你很好去。


A Survey of the JavaScript Programming Language由Douglas Crockford的。

+0

这正是我一直在寻找的!非常感谢你! – Sebastian 2010-04-22 01:40:01

+0

我不太确定这是一个好的答案。如果你的myNewField会与谷歌地图api的属性相冲突,那么未来可能会添加? **如果你幸运的话,这是一种黑客行为,而不是一个干净的终极解决方案**。 – TMS 2012-04-10 19:19:02

+0

@Tomas这不是黑客。对象是JavaScript中的hashmaps。 Google Maps API使用hashmap的一些键。他们可以在未来的版本中使用其他版本,但坚持特定版本的API应该可以防止这种冲突。 – 2012-04-11 21:16:22