Windows Phone 7的地理位置服务(Location Service)

Windows Phone 7的地理位置服务(Location Service)

      使用Location Service 能够帮助开发者为Windows Phone 开发具备位置感知功能的应用程序。Location Service能够从GPS,Wi-Fi和移动网络基站等多种数据源获得位置信息。根据应用程序的需要,Location Service从一个或多个数据源计算出位置信息。有效的平衡电池的消耗和位置信息的准确性(例如当电池的电量较低时,GPS定位的准确度将降低)。为应用程序提供基于事件的统一接口。当用户的地理位置发生改变时,将触发唯一的事件,并重新定位,获得新的定位信息。

一、Windows Phone 7获取数据三种来源

GPS 、Wi-Fi、 移动基站

Windows Phone可以从以上三个地方获得地理信息

GPS : 精确度最高,但是最耗电,速度比较慢,在室内无法得到定位信息。

Wi-Fi:国内使用较少,在电源消耗上比GPS小很多,速度要比GPS快。主要是依靠后台的数据库来定位。

基站:准确度最低,但是速度很快,信号强度好。主要是通过几个基站来确定用户位置,电源消耗很少,在野外可能无信号。

二、使用地理位置服务

需要使用引用

System.Device

System.Observable

这两个命名空间

模拟器不提供GPS服务,.Wi-Fi服务和基站服务,且模拟器不提供回调。所以无法直接在模拟器上实现定位,模拟器只能实现状态更新而没有数据返回。

地理位置服务示例代码:

GeoCoordinateWatcher  watcher;    private void StartButton_Click(object sender, RoutedEventArgs e)          {              if (watcher == null)              {                  //GeoPositionAccuracy.High定义定位的精度水平,Hight表示高                  watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);                  //表示定位更新频率,即设定门限值,频率高则耗电高,因为它随时需要定位新的方位                  watcher.MovementThreshold = 20;                  //状态改变事件,如数据改变,服务停止等  watcher.StatusChanged  + =  new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);                  //位置改变事件,如经度,纬度,海拔等  watcher.PositionChanged  + =  new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);  watcher.Start();              }          }  void watcher_PositionChanged(object sender,   GeoPositionChangedEventArgs<GeoCoordinate> e)          {              Dispatcher.BeginInvoke(() =>               {                  //获取纬度坐标                  this.LatitudeTextBox.Text = e.Position.Location.Latitude.ToString();                  //获取经度坐标                  this.LongitudeTextBox.Text = e.Position.Location.Longitude.ToString();              });          }            void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)          {              Dispatcher.BeginInvoke(() =>                  {                      StatusTextBox.Text = e.Status.ToString();                  });          }

以上内容参考了Jake Lin的视频。

(版权所有,转载请标明出处)

你可能感兴趣的:(Windows Phone 7的地理位置服务(Location Service))