如何在 UWP 中加快地理位置检索过程



我正在使用地理定位器类在 UWP 应用程序中查找设备的当前位置。位置检索过程在我的计算中运行得非常快。但是当我尝试在真实设备中运行相同的应用程序时,设备检索过程大约需要 30 秒。我正在使用以下代码片段:

var accessStatus = await Geolocator.RequestAccessAsync();
if (accessStatus == GeolocationAccessStatus.Allowed)
{
    Geolocator geolocator = new Geolocator
    {
        DesiredAccuracyInMeters = 500,
        DesiredAccuracy = PositionAccuracy.High
    };
    Geoposition pos = await geolocator.GetGeopositionAsync()
}

如何在我的设备中加快此过程?

已经尝试通过将 DesiredAccuracy InMeter 值增加到 2000 来尝试,但找不到任何改进。提前谢谢。

如果您查看文档,您可以看到当您同时设置 DesiredAccuracyDesiredAccuracyInMeters 时,最后设置的优先:

当"所需精度(以米为单位("和"所需精度">

均未设置时,你的应用将使用 500 米的精度设置(对应于"默认"的"所需精度"设置(。将"所需精度"设置为"默认值"或"高"间接将"所需精度(以米为单位("分别设置为 500 米或 10 米。当你的应用同时设置"所需准确度"和"所需准确度(以米为单位("时,你的应用将使用最后设置的准确度值。

因此,您因为将DesiredAccuracy设置为High,所以您实际上覆盖了仪表设置。若要加快搜索速度,请不要设置High精度,而仅设置米值。

我会补充马丁的问题,你应该先使用缓存的位置,然后使用GetPositionAsync,你应该通过这种方式更快地本地化用户:

var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 500;
//Check if we have a cached position
var loc = await locator.GetLastKnownLocationAsync ();
if ( loc != null )
{
    CurrentPosition = new Position (loc.Latitude, loc.Longitude);
}
if ( !locator.IsGeolocationAvailable || !locator.IsGeolocationEnabled )
{
    return;
}
//and if not we get a new one
var def = await locator.GetPositionAsync (TimeSpan.FromSeconds (10), null, true);
CurrentPosition = new Position (def.Latitude, def.Longitude);

最新更新