我正在开发一个使用 Bing 地图控件的 Windows 应用商店应用程序。我创建了一个使用Geolocator和GeoPosition来获取用户当前位置的方法。
另外,我从清单文件中启用了定位功能。
但是,每次运行应用程序时,第一次单击按钮获取位置时,都会收到以下错误消息:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))。
当我在同一个按钮中第二次单击以执行相同的操作时,现在错误消息消失了,Bing 地图可以正常工作,向我显示我当前的位置。但是,我有点担心为什么我第一次尝试获取位置时总是收到错误消息。
以下是我执行以获得该位置的两种方法:
private async Task SetMyLocation()
{
var position = await GetCurrentPosition();
if (position != null)
{
this.DataContext = position;
this.myLocation = new Location(position.Latitude, position.Longitude);
this.myMap.Center = this.myLocation;
//this.myMap.ZoomLevel = 20;
this.myMap.SetView(myLocation, 12, MapAnimationDuration.Default);
this.AddMyLocationPushpin();
}
}
private async Task<Position> GetCurrentPosition()
{
try
{
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
geolocator.MovementThreshold = 0;
Geoposition location = await geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5),
timeout: TimeSpan.FromSeconds(10)
);
var postion = new Position
{
Latitude = location.Coordinate.Latitude,
Longitude = location.Coordinate.Longitude
};
return postion;
}
catch (Exception ex)
{
. . .
return null;
}
}
任何建议,评论为什么我收到上述错误消息?任何线索和/或解决方案都可以吗?
问候!