xamarin形式的地理定位器

本文关键字:定位器 xamarin | 更新日期: 2023-09-27 18:06:13

我正在使用xamarin表单开发android应用程序。这里是我的代码,是用来获得纬度和经度。但是当我尝试使用模拟器时,它每次都有效,但移动设备有时有效,有时无效。请帮帮我。

            var locator = Geolocator.Plugin.CrossGeolocator.Current;
            locator.DesiredAccuracy = 50;
            try
            {
                var locator2 = Geolocator.Plugin.CrossGeolocator.Current;
                locator2.DesiredAccuracy = 50;
                var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000);
                if (position == null)
                {
                    return;
                }
            }
            catch (Exception ex)
            {
            }

xamarin形式的地理定位器

在这个页面https://developer.xamarin.com/guides/android/platform_features/maps_and_location/location/你可以看到

注意:设置ACCESS_FINE_LOCATION意味着同时访问粗定位数据和细定位数据。你不需要同时设置这两种权限,只需要设置应用运行所需的最小权限即可。

add this inside android mainactivity OnCreate()

Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;

添加到android mainactivity:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
{
    Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

则此代码将起作用,提示用户获得位置权限。

                var locator = CrossGeolocator.Current;
                locator.DesiredAccuracy = 1000;
                var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000);

是指:https://jamesmontemagno.github.io/GeolocatorPlugin/