CrossGeolocator的GetPositionAsync不起作用 [英] CrossGeolocator's GetPositionAsync does not work

查看:55
本文介绍了CrossGeolocator的GetPositionAsync不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using CrossGeolocator to retrieve the current latitude and longitude of the device. However I am using it inside an OnAppearing override method and it is not working. The GetPositionAsync method hangs the App.

 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 方法,并且效果很好.

Detail is that I am using this same GetPosition method in buttons in the application and works perfectly.

有人可以在这件事上帮助我吗?

Could someone help me in this matter?

推荐答案

尝试一下:

创建一个全局变量:

private Position _position;

然后调用ur方法以获取构造函数上的位置. 像这样重新编写您的方法:

Then call ur method to get the position on constructor. Re-write ur method like this:

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

然后花点时间在这里使用它:

Then make a while where u want to use this:

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

这篇关于CrossGeolocator的GetPositionAsync不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆