4

我正在从开发人员 API v3 创建一个谷歌地图。它填充了从 ColdFusion 查询 MsSQL 数据库动态创建的标记。

 <cfloop query="One">
 <script>locations[<cfoutput>#One.userID#</cfoutput>
] = new google.maps.LatLng(<cfoutput>#One.latLng#</cfoutput>);
 </script>
 </cfloop>

我需要一种在单击标记时识别标记的方法,以便我可以在地图下方的框中显示地址详细信息,并在单击页面下方的按钮时突出显示标记。

4

3 回答 3

5

通常,您通常会将自己的自定义属性分配给标记。就像是:

function markerClicked(e) {
    console.log('Marker ' + marker.myData + ' has been clicked');
}
var marker = new google.maps.Marker(...);
marker.myData = 1; //this could be arbitrary data or even another object
google.maps.event.addListener(marker, 'click', markerClicked);

但是,将自定义数据添加到任何 Google Maps API 对象都有风险。谷歌的代码被混淆了,内部(未记录的)属性可以而且确实会改变。确保您的财产以不会与任何现有财产或未来财产冲突的方式命名。提示:选择长度超过 3 个字母的属性名称。

如果您要缩小/编译/压缩地图代码,那么还有其他注意事项

于 2013-03-08T20:34:38.643 回答
4

关于什么 :

google.maps.event.addListener(marker, "click", function (e) {
    var clicked = this;
    //...
});
于 2013-10-11T14:31:14.827 回答
0

这在文档中得到了非常彻底的记录/解释。

https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows

创建标记时,将 dom 侦听器添加到标记中,如下所示

  google.maps.event.addListener(marker, 'click', function() {
     infowindow.open(map,marker);
  });
于 2013-03-08T17:13:34.640 回答