我试图创建一个不断获取位置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
答案 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
}