瀏覽器中的 JavaScript 是由事件驅動的,這表示 JavaScript 會通過生成事件來響應交互,并期望程序偵聽感興趣的事件。事件分為兩種類型:
用戶事件(如“點擊”鼠標事件)是從 DOM 傳播到 Google Maps API 中的。這些事件是獨立的,并且與標準 DOM 事件不同
MVC 狀態更改通知反映了 Maps API 對象中的變化,并會根據 property_changed
慣例命名
每個 Maps API 對象均可導出大量已命名的事件。如果程序想要實現某些事件,則會為這些事件注冊 Javascript 事件偵聽器,并在 google.maps.event
命名空間中注冊 addListener()
事件處理程序,以便在接收這些事件后執行相應代碼。
下例將向您介紹當您與地圖交互時 google.maps.Map
會觸發哪些事件。
Maps API 中的一些對象旨在對用戶事件(例如鼠標事件或鍵盤事件)作出響應。google.maps.Marker
對象可以偵聽一些用戶事件,例如:
'click'
'dblclick'
'mouseup'
'mousedown'
'mouseover'
'mouseout
這些事件可能看上去像是標準 DOM 事件,但實際上卻是 Maps API 的一部分。由于不同的瀏覽器所實現的DOM
事件模型并不相同,因此,Maps API 提供了用于偵聽和響應這些 DOM 事件的機制,該機制無需處理各
種跨瀏覽器特性。這些事件通常還會在表明某些用戶界面狀態(例如鼠標位置)的事件中傳遞自變量。
MVC 對象通常都包含狀態。只要更改了對象的屬性,API 就會觸發已更改該屬性的事件。例如,當地圖的縮放
級別更改后,API 將會觸發地圖上的 zoom_changed
事件。您也可以在 event
命名空間方法
冊 addListener()
事件處理程序,以攔截這些狀態更改。
用戶事件和 MVC 狀態更改看上去很相似,但通常情況下,您會希望在代碼中對它們進行不同的處理。例如,
MVC 事件不在其事件中傳遞自變量。您可能需要調用該對象上的相應 getProperty
方法,以檢查 MVC 狀態
更改中所更改的屬性。
代碼示例:
google.maps.event.addListener(map,'zoom_changed',function () {
alert(map.getZoom());
});