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