【问题标题】:How to get GPS location instantly in Xamarin.forms?如何在 Xamarin.forms 中立即获取 GPS 位置?
【发布时间】:2016-05-07 07:50:00
【问题描述】:

我正在捕获 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);
 }

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

【问题讨论】:

    标签: xamarin navigation gps location xamarin.forms


    【解决方案1】:

    是的,您可以获得更快的响应,但这取决于您的要求。

    长答案涉及了解每个设备的操作系统和型号、要求的精度、GPS 采集时间、您当前的物理环境(室内、室外、GPS 卫星的物理阴影......)等等......所有的影响获得完整的 GPS 响应需要多长时间。

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

    iOS 上,您可以在 CoreLocation 上使用 RequestLocation,Apple 将其描述为用户位置的“快速修复”。这将执行最快的 GPS 开机、获取和关机。它非常适合快速获得一次性位置。

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

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

    因此,通过使用 Forms 的特定于平台的 Dependency Service,您可以获得快速位置,然后使用 Xamarin.Plugin 的 Geolocator 获得更准确和/或更近的位置。

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

    【讨论】:

    • 谢谢@SushilHangover 但在我的情况下,我需要用户可能在户外环境中快速准确的位置。我只需要准确的纬度和经度,它可以确认用户访问该位置。我不会在地图上显示用户的位置。也大多数用户将位于无法保证良好 wifi 或互联网连接的远程位置。那么,实现这一点的最佳和简单方法是什么?
    • @GaneshParikh 在您的情况下,您需要依赖完整的 GPS 位置,而这只会在设备/模型响应请求时发生。因此,您要么像现在一样继续这样做,要么开始在后台检查用户的 GPS 位置之前用户点击 ListView,因此当他们这样做时,您已经有一个可用的缓存 Long/Lat 并且你停止后台 GPS 更新
    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-05-06
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多