【发布时间】:2018-01-05 10:18:31
【问题描述】:
我想在 Xamarin CrossPlatform 应用程序上获取我的 gps 坐标,但我遇到了问题。
我有这个代码:
public MapPage()
{
SearchPosition();
map = new Map
{
IsShowingUser = true,
HeightRequest = 100,
WidthRequest = 960,
VerticalOptions = LayoutOptions.FillAndExpand
};
map.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(position.Latitude, position.Longitude), Distance.FromMiles(0.3)));
...
...
}
private async void SearchPosition()
{
position = await getPosition();
}
async Task<Plugin.Geolocator.Abstractions.Position> getPosition()
{
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
Plugin.Geolocator.Abstractions.Position position = await locator.GetPositionAsync(TimeSpan.FromSeconds(5));
return position;
}
我想要的只是等待 gps 坐标,但它会继续并在我获得 gps 坐标之前转到“MoveToRegien”。我不明白为什么,有人可以帮助我吗?谢谢!
【问题讨论】:
-
异步 void 就像一团火,一劳永逸。像这样,您无需等待 SearchPosition 方法完成。
-
我该如何等待呢?
-
@mnemonic 我看到了帖子,但它并没有解决问题。有什么想法吗?
-
@Imrik 如果你想要/需要一些 async/await 用法的例子,你也可以看看我的这个答案:stackoverflow.com/a/48127799/2814072
标签: c# android asynchronous xamarin gps