如何在Xamarin.forms中立即获得GPS位置?

Gan*_*ikh 4 navigation gps location xamarin xamarin.forms

Listview_ItemTapped通过使用Geolocator插件在xamarin.forms中获取GPS位置来捕获纬度和经度.但平均需要超过15秒来捕获位置.有没有办法立即获得位置.

if (CrossGeolocator.Current.IsGeolocationEnabled == false)
 {
    await DisplayAlert("Notification", "Geolocation is Unavailable ", "Ok");
 }
 else
 {
    Application.Current.Properties["LATITUDE"] = null;
     Application.Current.Properties["LONGITUDE"] = null;

    var locator = CrossGeolocator.Current;
    //locator.DesiredAccuracy = 50;               
    var position = await locator.GetPositionAsync(timeoutMilliseconds: 50000);

    Application.Current.Properties["LATITUDE"] = position.Latitude;
    Application.Current.Properties["LONGITUDE"] = position.Longitude;

    await Navigation.PushAsync(new RetailerDetailsPage(), false);
 }
Run Code Online (Sandbox Code Playgroud)

我尝试删除,locator.DesiredAccuracy = 50;但有时它会立即工作,有时它不会.

Sus*_*ver 5

是的,您可以更快地得到答复,但这取决于您的要求.

长期答案包括了解每个设备操作系统和型号,所需的准确度,GPS采集时间,您当前的物理环境(室内,室外,GPS卫星的物理阴影......)等都会影响它的持续时间需要获得完整的GPS响应.

虽然Xamarin.Plugin Geolocator很棒并且我一直使用它,但它不提供对所有各种平台特定位置功能的访问.

iOS上,你可以使用RequestLocationApple所描述的on CoreLocation作为用户所在位置的"快速修复".这将执行最快的GPS上电,获取和断电.获得快速的一次性位置非常棒.

Android上,您可以使用Google的Play FusedLocationProviderApi(FusedLocationApi)并通过获取用户位置GetLastLocation.这将立即返回该位置(很可能它为null).

使用Google位置服务,您可以根据用户的WiFi连接(基于SSID)等获取位置...

因此,通过使用Forms的特定于平台的依赖关系服务,您可以获得快速位置,然后使用Xamarin.Plugin Geolocator来获得更准确和/或更新的位置.

这正是我们在启动启动时在应用程序中的后台线程上所做的,因为用户看到的第一个视图是他们在自定义地图上的位置,而不是从后台线程获得"完整"GPS位置(和可能更准确的位置)我们可以调整地图......