1

Bing Maps コントロールを使用している Windows ストア アプリを開発しています。GeolocatorGeoPositionを使用してユーザーの現在位置を取得するメソッドを作成しました。

また、マニフェスト ファイルからロケーション機能を有効にしました。

ただし、アプリを実行するたびに、最初にボタンをクリックして位置を取得すると、次のエラー メッセージが表示されます。アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED)) .

同じアクションを実行するために同じボタンを 2 回クリックすると、エラー メッセージが消え、Bing マップが正しく機能し、現在の位置が表示されます。しかし、場所を取得しようとする最初の時間に常にエラーメッセージが表示される理由が少し心配です。

位置を取得するために実行する 2 つの方法を次に示します。

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