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;但有时它会立即工作,有时它不会.
是的,您可以更快地得到答复,但这取决于您的要求.
长期答案包括了解每个设备操作系统和型号,所需的准确度,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位置(和可能更准确的位置)我们可以调整地图......
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |