2013-03-08 86 views
2

我從開發人員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> 

我需要一種方法來識別標記時,它的點擊,所以我可以在地圖中顯示下方的箱的詳細地址,當一個按鈕被點擊網頁下方還higlight標記。

+0

這可能有助於向我們展示你使用添加標記太JS。我會將這些標記添加到數組中,然後使它們更容易訪問 – duncan 2013-03-08 17:31:30

+0

可能與 – 2013-03-10 21:18:03

回答

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對象都有風險。 Google的代碼被混淆,內部(未記錄)的屬性可以改變。確保您的財產的命名方式不會與任何現有財產或未來財產衝突。提示:選擇長度超過3個字母的屬性名稱。

如果您要縮小/編譯/壓縮您的地圖代碼,那麼有additional considerations

0

這在文檔中有很詳細的記錄/說明。

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

當您創建標記,添加DOM聽衆標記這樣

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

沒有任何關係您是什麼意思?是的 - 它傳遞給點擊功能的標記是一個對象。閱讀谷歌地圖API和JavaScript。 – kevin 2013-03-08 21:29:10

+0

確定你有一個被點擊的標記的引用,但是如果你正在管理自己的標記列表'[{marker:marker1,data:'1'},{marker:marker2,data:'2'},.. '',它不會幫助你在陣列中查找你的標記而不會循環整個事物。 – 2013-03-09 13:25:30

1

什麼:

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

考慮擴大你的答案,向提問者解釋爲什麼這達到了預期的結果,可能會鏈接到文檔。如此,這僅僅是有用的。 – 2013-10-11 14:49:54

相關問題