【问题标题】:How to achieve continuous & accurate Windows phone 8 gps tracking如何实现连续准确的 Windows phone 8 gps 跟踪
【发布时间】:2014-01-29 06:56:12
【问题描述】:

我尝试制作一个持续获取位置 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 源更改为蜂窝,它就再也不会使用 Satalite 作为 gps 源(蜂窝源返回最不准确的 gps 值)。那么如何在 windows phone 8 中指定 gps 源呢?

在设备上完成测试:诺基亚 lumia 520

【问题讨论】:

  • 将 DesiredAccuracy 属性设置为 High 以使用 gps 源

标签: c# windows-phone-8 gps


【解决方案1】:

我有一个可以在 Lumia 520 上测试的完全正常工作的 windows phone 定位客户端。请测试它并告诉我你的想法:

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

您不应该像关注准确性那样关注位置来源。如果源满足您要求的准确性(无论是 gps、wifi 还是手机),谁在乎它来自哪里。测试您的位置以确保它满足您的准确性需求:

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

【讨论】:

  • 谢谢,我会检查的。我在您的实现中看到的唯一区别是您使用的是静态地理定位器对象。这有什么重要性吗?
  • 我假设您的意思是我分配给 App.Geolocator = new Geolocator(); 的行我只是按照我看到的所有样本的方式来做。通过分配给应用程序的 App.Geolocator 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多