如何在点击时识别谷歌地图标记?

时间:2013-03-08 17:08:09

标签: google-maps google-maps-api-3 cfml

我正在从开发人员API v3创建Google Map。它填充了从ColdFusion查询MsSQL数据库动态创建的标记。

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

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

3 个答案:

答案 0 :(得分: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个字母的属性名称。

如果您要缩小/编译/压缩地图代码,则有additional considerations

答案 1 :(得分:3)

怎么样:

google.maps.event.addListener(marker, "click", function (e) {
    var clicked = this;
    //...
});

答案 2 :(得分:0)

在文档中对此进行了详细记录/解释。

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

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

  google.maps.event.addListener(marker, 'click', function() {
     infowindow.open(map,marker);
  });