Windows phone 8 JumpStart-地圖及定位
前言:
朵拉今天要介紹WP8 JumpStart 的範例--地圖定位。範例使用Bing Map。
以下是這個範例的學習重點:
1. 認識 Windows Phone Runtime Location API
2. 如何拿到phone現在的位置?
3. 如何讓定位追蹤持續進行?
4. 如何讓定位追蹤在背景執行?
5. 創建一個新的地圖控制項。
6. 設定地圖的顯示和縮放。
補充資料:
How to get the phone's current location for Windows Phone 8
關於MapView 屬性的完整介紹可以參考 : Maps and navigation for Windows Phone 8
小提醒:
在 app manifest內要記得 included " ID_CAP_LOCATION ",否則會因為沒有權限使用,而有例外發生唷!
Demo 1: Get Phone Position and Location Emulator
BasicLocationandMap 範例 : 學習如何拿到phone現在位置。
按下定位按鈕:
註記:
決定位置data的精確度: DesiredAccuracy
非同步的方式拿取現在所在位置 GetGeopositionAsync 參數一 可以設定位置的有效期限(maximumAge)而且透過參數二設定,直到timeout,才進行下次抓取資料。
大家可以參考下一個範例LocationTracker 範例中的Geolocator for position change,每次位置有變更的時候就抓取資料,所以呀,利用此範例非同步的方式定時抓取資料才能省電唷!
Demo 4: Map Control & Demo 5 : Pushpin
LocationTracker 範例 : 學習如何讓定位追蹤持續進行?(一旦位置改變就抓資料)
流程:
按下追蹤按鈕:
位置改變事件:
註記:
1. SystemTray+ProgressIndicator : 用來顯示系統當前狀態
2. GeoCoordinateEx : 此class定義在GeoCoordinateExtensions.cs
畫pushpin:
註記:
在wp8沒有pushpin object 但可以自行畫UIElement在MapOverlay上 然後在MapLayer上給定位置。
道路 天線 混合 地形 深色
註記:
1. 設定map顯示模式
Demo 2: Tracking Phone Position & Demo 3: Background Location Tracking
BackgroundLocationTracker 範例: 學習如何使定位追蹤在背景執行。並且當位置改變時,send toast提醒使用者。
註冊app在背景執行:
註記:
1. 在App.xaml內註冊Application_RunningInBackground事件
2. 需要一個方法告訴app現在是否在背景執行:
註記:
在App.xaml.cs內宣告一個bool,以後就透過這個值判斷
程式執行中。非在背景執行,所以持續更新UI
使用者離開此程式,但未reset(並未關閉此程式),可以透過長按返回鍵看是否仍在。因為仍在背景執行,一旦感測到位置有改變,send toast告知使用者。
位置改變事件:
註記:
設定map畫面跳轉時的動畫效果。
1. Center: 給定中心點的Geoposition
2. ZoomLevel: 地圖顯示倍數
3. Heading: 方位
4. Pitch: 仰視角
5. BoundingRectangle: a LocationRectangle object that contains the Map control
6. AnimationKind: 地圖轉換的動畫效果
補充 :
如果非FAR程式,跳至page2,那麼page2是back鍵內的唯一page,則按下back鍵之後會退出程式。
但在FAR的程式中,跳至page2,但因為BackStack內存有mainpage,所以當運行新程序,按下back鍵,則會以mainpage的程序退出。
流程:
最後:
WP8的地圖控制官方範例:Simple Map control sample。
有關WP8 JumpStart詳細課程內容都可以上Windows Phone Developer Blog唷。
如有任何問題、錯誤,可在下面留言,謝謝您的指教。













