天天看點

《JavaScript建構Web和ArcGIS Server應用實戰》——2.6 地圖事件

本節書摘來自異步社群《javascript建構web和arcgis server應用實戰》一書中的第2章,第2.6節,作者: 【美】eric pimpler(派普勒) 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在程式設計世界裡,事件是發生在應用程式中的動作。通常,這些事件通過終端使用者觸發,包括滑鼠單擊、滑鼠拖拽和鍵盤動作,但是它還包括資料的發送和接收、元件修改和其他操作。

arcgis api for javascript是一個異步的api,遵循應用程式注冊(釋出)事件的監聽(使用者)中的釋出/訂閱模式。圖2-15說明了該過程。監聽器負責監控應用程式中的事件,然後觸發一個處理函數來響應事件。多個事件可以注冊到同一個監聽器中。dojo中的on()方法就是這樣的一個事件處理程式。

《JavaScript建構Web和ArcGIS Server應用實戰》——2.6 地圖事件

你可能還記得,arcgis serverjavascriptapi建立在dojo之上。使用dojo,事件通過dojo的on()方法注冊給處理程式。該方法接收三個參數,仔細觀察圖2-16,你會對事件注冊有更好的了解。

《JavaScript建構Web和ArcGIS Server應用實戰》——2.6 地圖事件

https://yqfile.alicdn.com/d3fe0d9b8745f9855e1738cd87a3ea3fd309d573.png" >

我們調用帶參數的on()方法,參數包括map、click和displaycoordinates。前面兩個參數代表對象和我們需要注冊的事件。在這種情況下,意味着我們正在為map對象注冊click事件。在地圖範圍内,每當使用者單擊滑鼠就會觸發此事件。最後一個參數displaycoordinates代表事件的監聽器。是以,每當map對象的click事件觸發時,将會觸發displaycoordinates函數,它将運作并報告地圖目前範圍。雖然事件和注冊的處理取決于環境的變化,但是注冊的方法是一樣的。

每次事件發生時,event對象将産生。該event對象包括額外的事件資訊,比如滑鼠按鈕被單擊或者鍵盤某個按鍵被按下。這個對象會自動傳遞到事件處理程式中檢查。如下列代碼所示,你可以看到event對象作為一個參數傳遞到了處理程式中。這是一個動态對象,它的屬性也會根據被觸發的事件類型而發生變化。

api中不同對象有着不同的事件。但是,你要牢記不要用監聽器來注冊每一個事件。隻有那些應用程式中需要的事件才需要注冊。當一個事件沒有使用監聽器進行注冊時,該事件會被忽略。

map對象包含多種不同響應事件,包括各種滑鼠事件、範圍改變事件、底圖改變事件、鍵盤事件、圖層事件、平移和縮放事件以及更多其他事件。應用程式中可以響應任意這些事件。在接下來的章節中,我們将學習其他對象可用的事件。

在不需要的時候,從處理函數中斷開事件是一個好的程式設計習慣。這通常在當使用者從頁面導航離開或者關閉浏覽器視窗時完成。下列代碼顯示了如何簡單地通過調用remove()方法完成移除單擊事件。

繼續閱讀