WP7如何獲取GPS坐標信息
基于手機的應用,不可缺少的一項就是位置信息,在WP7中,微軟提供了一個GeoCoordinateWatcher類,可以方便的拿到當前所在的經緯度
- GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
- watcher.MovementThreshold = 20;
- watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
- watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
- watcher.Start();
實例化GeoCoordinateWatcher對象的時候,需要提供一個參數,GeoPositionAccuracy,該枚舉有兩個成 員,Default和High,在Defalut模式下,微軟會平衡電池,性能等因素返回一個坐標信息,該信息可能不是很精確,如果你確實需要高精度的位 置信息,那么可以用High模式.
GeoCoordinateWatcher 有個屬性MovementThreshold,他表示用戶移動多少位置之后,會執行PositionChanged事件,默認值是0,也就是任何移動都會觸發PositionChanged,你可以自定義一個值,單位是"米".
GeoCoordinateWatcher 還有兩個常用的事件,PositionChanged和StatusChanged. PositionChanged前面已經講過,根據你設置的值,會在用戶移動的時候,觸發這個事件.StatusChanged是表示當前GPS的狀態
- void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
- {
- switch (e.Status)
- {
- case GeoPositionStatus.Initializing:
- break;
- case GeoPositionStatus.Ready:
- break;
- case GeoPositionStatus.NoData:
- break;
- case GeoPositionStatus.Disabled:
- break;
- }
- }
該枚舉包含4個成員,Initializing:初始化中,Ready:準備好,NoData沒有數據,Disabled被關閉.
在這些事件和屬性設置好之后,調用watcher.Start();定位便開始了,同時會在條件滿足的時候,觸發事件.最后,別忘了添加system.device的引用..
不得不說, .Net封裝的真強大.非常方便的就能使用!!