如何实现连续和准确的Windows手机8 gps跟踪

时间:2014-01-29 06:56:12

标签: c# windows-phone-8 gps

我试图创建一个不断获取位置Windows Phone 8的应用程序。

以下代码用于获取位置。

                geolocator = new Geolocator();
                geolocator.DesiredAccuracyInMeters = 30;
                geolocator.ReportInterval = 15000;
                geolocator.StatusChanged += geolocator_StatusChanged;
                geolocator.PositionChanged += geolocator_PositionChanged;

当gps正常运行时,一切正常。

但是一旦gps位置不可用,Geolocator就会停止提取位置。(即当设备返回gps区域时未调用geolocator_PositionChanged)

我试图按照this blog ( geoposition advanced tracking scenarios for windows phone 8 )

geolocator_StatusChanged()中创建新的地理定位器对象
  case PositionStatus.NoData:
              geolocator = new Geolocator();
              geolocator.DesiredAccuracyInMeters = 30;
              geolocator.ReportInterval = 15000;
              geolocator.StatusChanged += geolocator_StatusChanged;
              geolocator.PositionChanged += geolocator_PositionChanged;

              status = "no data";
              break;

但它也没有用。请指导我如何确保gps数据的持续可用性?

另一点注意到,一旦gps源变为Cellular,它就永远不会再使用Satalite作为gps源(细胞源返回最不准确的gps值)。那我怎么能在windows phone 8中指定gps源?

在设备上进行测试:诺基亚lumia 520

1 个答案:

答案 0 :(得分:1)

我有一个完全正常工作的Windows手机定位客户端,我已经在Lumia 520上测试过了。请测试一下,让我知道你的想法:

https://github.com/nickfox/GpsTracker/tree/master/phoneClients/windowsPhone

您不应该像定位一样关注位置来源。如果某个来源符合您所要求的准确度(无论是gps,wifi还是手机),谁会关心它来自哪里。测试您的位置,以确保它符合您的准确性需求:

if (args.Position.Coordinate.Accuracy < 100.0) {
// do something with location
}