WP7如何獲取GPS坐標(biāo)信息
基于手機(jī)的應(yīng)用,不可缺少的一項(xiàng)就是位置信息,在WP7中,微軟提供了一個(gè)GeoCoordinateWatcher類,可以方便的拿到當(dāng)前所在的經(jīng)緯度
- 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();
實(shí)例化GeoCoordinateWatcher對(duì)象的時(shí)候,需要提供一個(gè)參數(shù),GeoPositionAccuracy,該枚舉有兩個(gè)成 員,Default和High,在Defalut模式下,微軟會(huì)平衡電池,性能等因素返回一個(gè)坐標(biāo)信息,該信息可能不是很精確,如果你確實(shí)需要高精度的位 置信息,那么可以用High模式.
GeoCoordinateWatcher 有個(gè)屬性MovementThreshold,他表示用戶移動(dòng)多少位置之后,會(huì)執(zhí)行PositionChanged事件,默認(rèn)值是0,也就是任何移動(dòng)都會(huì)觸發(fā)PositionChanged,你可以自定義一個(gè)值,單位是"米".
GeoCoordinateWatcher 還有兩個(gè)常用的事件,PositionChanged和StatusChanged. PositionChanged前面已經(jīng)講過,根據(jù)你設(shè)置的值,會(huì)在用戶移動(dòng)的時(shí)候,觸發(fā)這個(gè)事件.StatusChanged是表示當(dāng)前GPS的狀態(tài)
- 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個(gè)成員,Initializing:初始化中,Ready:準(zhǔn)備好,NoData沒有數(shù)據(jù),Disabled被關(guān)閉.
在這些事件和屬性設(shè)置好之后,調(diào)用watcher.Start();定位便開始了,同時(shí)會(huì)在條件滿足的時(shí)候,觸發(fā)事件.最后,別忘了添加system.device的引用..
不得不說, .Net封裝的真強(qiáng)大.非常方便的就能使用!!