我正在使用 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/