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

时间:2016-05-07 07:50:01

标签: xamarin navigation gps location xamarin.forms

我正在捕捉Latitude& Listview_ItemTapped使用Geolocator插件获取xamarin.forms中GPS定位的经度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); } 。 但平均需要超过15秒来捕获位置。有没有办法立即获得位置。

locator.DesiredAccuracy = 50;

我尝试删除{{1}},但有时它会立即发挥作用&有时不是。

1 个答案:

答案 0 :(得分:5)

是的,您可以获得更快的回复,但取决于您的要求。

长答案涉及了解每个设备OS&模型,要求的准确度,GPS采集时间,您当前的物理环境(室内,室外,GPS卫星的物理阴影......)等都会影响获得完整GPS响应所需的时间。

虽然Xamarin.Plugin Geolocator很棒并且我一直使用它,但它无法访问所有各种平台特定的位置功能。<​​/ p>

iOS 上,您可以使用CoreLocation上的RequestLocation,Apple称为&#34;快速修复&#34;在用户的位置。这将执行最快的GPS上电,获取和断电。获得快速的一次性位置非常棒。

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

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

所以通过使用表格&#39;特定于平台的Dependency Service,您可以获取快速位置,然后使用Xamarin.Plugin Geolocator来获取更准确和/或更新的位置。

这正是我们在启动启动时在app中的后台线程上所做的事情,因为用户看到的第一个视图是他们在自定义地图上的位置,而不是a&#34; full&#34; GPS位置是从后台线程获得的(可能更准确的位置)我们可以调整地图......