我正在使用CrossGeolocator来检索设备的当前纬度和经度.但是我在OnAppearing覆盖方法中使用它并且它无法正常工作.该GetPositionAsync方法挂起的应用程序.
protected override void OnAppearing() { base.OnAppearing(); var position = GetPosition().Result; var lat = position.Latitude; var lon = position.Longitude; } private static async TaskGetPosition() { var locator = CrossGeolocator.Current; locator.DesiredAccuracy = 50; var position = await locator.GetPositionAsync(10000); return position; }
细节是我在应用程序的按钮中使用相同的GetPosition方法并且工作得很好.
有人可以帮我解决这个问题吗?
尝试这个:
创建一个全局变量:
private Position _position;
然后调用ur方法以获取构造函数上的位置。像这样重写ur方法:
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();