Windows Phone 8平台上GPS的错误行为

7
我们正在为我们的应用程序评估WP8。它利用GPS来跟踪某个区域中的承包商工作。我们认为Nokia Lumia是非常好的硬件平台,但是在软件堆栈方面遇到了问题。
a. 我们尝试了该平台的Geolocator功能,将MovementThreshold设置为100,并将精度设置为HIGH。 b. 仍然存在数据错误(即使我们移动一米左右,也会出现中断并显示远离实际位置)。在搜索网络和文档后,我们发现“在WP8上,如果无法从WiFi /蜂窝网络获取位置信息,则只能使用基于卫星的GPS位置。”
这破坏了对对象的精细跟踪。是否有任何方法(例如在Android中我们可以选择提供者)可以强制使用基于卫星的GPS?
如果这算是一个重复的问题,那我很抱歉。
任何帮助都将不胜感激。
注:我们已经应用了计算两点之间差异的公式并过滤阈值,但这并不是好的方法。
谢谢。
2个回答

6

2个Geocoordinate类: 1 Geo*C*oordinate属于System.Device.Location命名空间 2 Geo*c*oordinate属于Windows.Devices.Geolocation命名空间

如果您在跟踪代码中使用Geolocator,则获取的坐标是Geocoordinate,因为两者都在2,即Windows.Devices.Geolocation命名空间中。 如果使用geocoordinatewatcher,则会给出GeoCoordinate,因为两者都在1 System.Device.Location中。

如果您正在使用Geocoordinatewatcher,则上面的代码可以正常工作,但如果您正在使用Geolocator,则水平精度属性对您不可用,而必须使用准确性属性。

private const double ACCURACY_THRESHOLD = 20;

private void LocationChanged(Geocoordinate coordinate)
{
   if (coordinate.Accuracy < ACCURACY_THRESHOLD)
   {
       // use point
   }
   else
   {
       // ignore and wait for better accuracy
   }
}

或者你可以将Geocoordinate转换为GeoCoordinate,并使用上面答案中提到的代码。

5

您无法强制卫星跟踪,但是选择高精度将使其启用。然后,您可以评估接收到的位置的准确性,并选择不使用不准确的位置。准确度是以米为单位的GeoCoordinate类的一部分。

private const double ACCURACY_THRESHOLD = 20;

private void LocationChanged(GeoCoordinate coordinate)
{
   if (coordinate.HorizontalAccuracy < ACCURACY_THRESHOLD)
   {
       // use point
   }
   else
   {
       // ignore and wait for better accuracy
   }
}

请查看http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.horizontalaccuracy.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接