Display user’s location

Display user’s location

此篇為顯示使用者的位置,是指當手機移動時,地圖會跟著移動或旋轉,使用者的位置永遠在螢幕的中間。繼上一篇 MapBox基礎 的完整代碼後,再加入如下藍色部份,地圖就可以移動旋轉了。本篇的完整代碼置於最後面,大家可以一邊看說明,一邊看最後面的完整代碼。

監聽器(Listener)

先建立三個監聽器物件變數,分別為 onIndicatorBearingChangedListener(監視旋轉),onIndicatorPositionChangedListener(監視位置變更) 及 onMoveListener(監視手勢移動地圖)。

在 “初始化位置元件函數”  initLocationComponent() 中,由mapView.location取得 “位置元件外掛”(locationComponentPlugin)。然後將上述旋轉及位置變更監聽器加入 locationComponentPlugin 中。

最後由mapReady啟動 initLocationComponent 函數

自訂定位器(Puck)

標示使用者位置的圖標,大陸用語稱為定位器(puck)。定位器預設為外圍白色,內圈藍色的圓點。若要更自已的圖標,可於 “initLocationComponent” 中,產生locationComponentPlugin後,再產生LocationPuck2D物件,再將此物件指定給 locationComponentPlugin.locationPuck變數即可。

LocationPuck2D 可指定三個圖像,分別為 topImage, bearingImage, shadowImage。而 com.mapbox.maps.plugin.locationcomponent 有提供一些預設的圖像。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

ViewPort

所謂的 ViewPort,是指整個顯示地圖的視窗,也就是我們所看到的那個四方型。

這個四方型的 ViewPort有二種狀態(State) : 
第一個是會隨著定位器移動視窗的狀態(viewport.makeFollowPuckViewportState)
第二個是顯示使用者所提供的經緯度(viewport.makeOverviewViewportState)

要切換這二種狀態,需使用 mapView.viewport產生 viewportPlugin物件,如下

🔒 更多內容,請登入會員繼續閱讀。

立即登入

Viewport Transitions

Transitions是過渡,遷移的意思。在這邊是指地圖移動時的動畫,有二種方式
viewport.makeDefaultViewportTransition : 預設會使用動畫。
viewport.makeImmediateViewportTransition : 不使用動畫,所以更感覺不到有在動。

即然預設會使用動畫,所以底下的代碼就可以不用理會。但若要增加動畫時間,可以使用Viewport的第一種狀態,再延長動畫的時間,如下

🔒 更多內容,請登入會員繼續閱讀。

立即登入

完整代碼

底下為完整代碼。此處有個問題,就是使用者用手移動地圖時,會觸發 onMoveListener,進而取消位置元件的跟蹤功能,所以當再次移動位置時,地圖就不會移動了。

要解決此方法,可以在地圖上加上一顆按鈕,然後再次啟動 initLocationComponent()函數。此部份日後再進行說明。目前可以先把 setupGesturesListener()那行註解掉。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *