Windows Phone 8平台上的GPS越野车行为

时间:2013-07-03 10:10:54

标签: windows-phone-7 gps windows-phone-8 windows-phone

我们正在为我们的应用评估WP8。它利用GPS跟踪在该地区工作的承包商。我们看到诺基亚Lumia是非常好的硬件平台,但面临软件堆栈的问题。

a。我们尝试了此平台的geolocator功能,并将MovementThreshold设置为100,精度设置为HIGH。 湾我们仍然看到数据错误(即使我们移动大约一米,我们得到中断和位置太远离实际)。在网络和文档上搜索后,我们发现'在WP8上,基于卫星GPS的位置只有在无法从WiFi /蜂窝网络获取位置信息时才会使用。

这会扼杀对象的精细跟踪。有没有办法(比如在android我们可以选择提供者)我们可以强迫周六。基于GPS?

如果它有点重复,我很抱歉。

任何帮助将不胜感激。

PS:我们已经应用了计算点到点之间的差异的公式,并用阈值进行过滤,但这不是很好的方法。 此致...

2 个答案:

答案 0 :(得分: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,那么Horizo​​ntalAccuracy属性就不适合你,而是你必须使用Accuracy Property。

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并使用上面回答中提到的代码。

答案 1 :(得分: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