我有一大堆代码用于获取设备位置。这是在monogame windows uwp项目中完成的。以下代码之前有效(我在VS2015社区)。我最近做了一个新的操作系统并安装VS2017社区。我终于得到了我的项目来构建和运行。唯一不起作用的是Geolocator.RequestAccessAsync抛出“在意外时间调用的方法”异常。有什么想法吗?
public async Task<Vector2> GetDeviceGps()
{
var accessStatus = await Geolocator.RequestAccessAsync();
switch (accessStatus)
{
case GeolocationAccessStatus.Allowed:
// If DesiredAccuracy or DesiredAccuracyInMeters are not set (or value is 0), DesiredAccuracy.Default is used.
Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = 10 };
// Subscribe to the StatusChanged event to get updates of location status changes.
//geolocator.StatusChanged += OnStatusChanged;
// Carry out the operation.
Geoposition pos = await geolocator.GetGeopositionAsync();
return new Vector2((float)pos.Coordinate.Point.Position.Longitude, (float)pos.Coordinate.Point.Position.Latitude);
case GeolocationAccessStatus.Denied:
//Do something!
break;
case GeolocationAccessStatus.Unspecified:
//Murp
break;
}
return Vector2.Zero;
}
这样被调用和处理(从游戏的更新方法调用):
mapper.GetDeviceGps().ContinueWith(pos =>
{
Vector2 bob = pos.Result;
});
答案 0 :(得分:0)
当您第一次在应用中运行RequestAccessAsync时,系统会要求用户授予您的应用位置权限。因此,该方法需要在UI线程中执行。