Xamarin 表单获取当前位置需要更多时间

问题描述

我有 xamarin 表单应用程序并具有捕获当前用户位置的功能,我使用 CrossGeolocator PLugin
以及获取位置的这些部分代码

   locator = CrossGeolocator.Current;
   var position = await locator.GetPositionAsync();
   order.@long = position.Longitude;
   order.lat = position.Latitude;

它的返回位置,但有时需要更多时间来返回当前位置是否有任何解决方案可以减少位置捕获时间。 谢谢

解决方法

如果您想加快进程 - 使用 var service = new CustomerService(); var options = new CustomerCreateOptions { Email = "test@example.com",Description = "Example customer",}; options.AddExtraParam("metadata[user_id]","cooluser123"); Customer customer = service.Create(options); var cust = service.Get(customer.Id); var metadata = cust.Metadata; Console.WriteLine("Metadata['user_id']: " + metadata["user_id"]); 。 Xamarin.Essentials 提供了一种获取用户位置的极好方法,与使用 Geolocator 插件相比,这是一种更快的替代方法。不仅如此 - Xamarin.Essentials 已经过良好测试,并由 Microsoft 本身提供支持。

首先将以下代码粘贴到您的 Xamarin.Essentials 文件中:

AndroidManifest.xml

以下是获取用户纬度和经度的示例 - 您可以将以下代码调整到您的项目中:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />

有关地理位置的更多信息,请访问 https://docs.microsoft.com/en-us/xamarin/essentials/geolocation?tabs=android

当您使用 var position = await Xamarin.Essentials.Geolocation.GetLocationAsync(); double latitude = position.Latitude; double longitude = position.Longitude; 时,您应该会注意到速度的显着差异。