c# - CrossGeolocator 的 GetPositionAsync 不起作用

标签 c# mobile xamarin

我正在使用 CrossGeolocator 检索设备的当前纬度和经度。但是我在 OnAppearing 覆盖方法中使用它,但它不起作用。 GetPositionAsync 方法挂起应用程序。

 protected override void OnAppearing()
 {
     base.OnAppearing();

     var position = GetPosition().Result;
     var lat = position.Latitude;
     var lon = position.Longitude;
 }

 private static async Task<Position> GetPosition()
 {
     var locator = CrossGeolocator.Current;
     locator.DesiredAccuracy = 50;

     var position = await locator.GetPositionAsync(10000);
     return position;
 }

详细信息是,我在应用程序的按钮中使用了相同的 GetPosition 方法,并且效果很好。

有人可以帮我解决这个问题吗?

最佳答案

试试这个:

创建一个全局变量:

private Position _position;

然后调用你的方法来获取构造函数的位置。 像这样重写你的方法:

public async void GetPosition()
{
    var locator = CrossGeolocator.Current;
    locator.DesiredAccuracy = 50;
    var myPosition = await locator.GetPositionAsync();
    _position = new Position(myPosition.Latitude, myPosition.Longitude);
}

然后在你想使用它的地方花点时间:

while(_position == new Postion(0,0))
      GetPosition();

关于c# - CrossGeolocator 的 GetPositionAsync 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763540/

相关文章:

c# - 如何诊断 UWP 应用崩溃的故障

html - Logo 未出现在移动网站上

css - 如何实现手机分屏,但宽度是屏幕尺寸的两倍?

c# - 如何在不模拟的情况下检查具有 [UserName] 和 [Password] 的用户是否是 [DomainName] 的域管理员?

c# - 为什么将 LinearGradientBrush.WrapMode 设置为 Clamp 会因 ArgumentException ("parameter is not valid"失败)?

java - Xamarin KeyStore 密码保护字段

c# - Visual Studio 2015 无法调试 xamarin 项目

xamarin - initWithCoder 已使用最新版本的 Xamarin.iOS 明确标记为不可用错误

c# - 在 Windows 窗体中使用带有工作单元和存储库模式的简单注入(inject)器

android - 移动版仅在左侧显示文字