1

我正在开发一个使用 Bing 地图控件的 Windows 应用商店应用程序。我创建了一个使用GeolocatorGeoPosition来获取用户当前位置的方法。

另外,我从清单文件中启用了定位功能。

但是,每次运行应用程序时,第一次单击按钮获取位置时,都会收到以下错误消息:访问被拒绝。(来自 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;
    }
}

任何建议,评论为什么我收到上述错误消息?任何线索和/或解决方案都可以吗?

问候!

4

1 回答 1

0

确保您已允许您的应用访问用户位置。打开包清单并转到功能选项卡。确保选中位置选项。重新运行您的应用程序,系统会提示您允许该应用程序访问您的位置,允许它。然后它应该为你工作。您可以在此处找到有关此的博客文章示例:http: //www.bing.com/blogs/site_blogs/b/maps/archive/2012/11/05/getting-started-with-bing-maps-windows-store -apps-native.aspx

于 2014-01-14T16:06:19.877 回答