2

Windows ストア アプリで位置情報機能を使用しようとしています。既に XAML ページに Bing Maps コントロールを配置しています。

コード ビハインドでは、次のコードを使用して現在の場所を取得しようとしています。

private async Task SetMyLocation()
{
var position = await this.GetCurrentPosition();
if (position != null)
this.DataContext = position;

this.myLocation = new Location(position.Latitude, position.Longitude);
this.myMap.Center = this.myLocation;
}

と 。. .

private async Task<Position> GetCurrentPosition()
{
  try
  {
    Geolocator geolocator = new Geolocator();
    geolocator.DesiredAccuracy = PositionAccuracy.High;
    geolocator.MovementThreshold = 0;
    Geoposition location = await geolocator.GetGeopositionAsync();

    var postion = new Position
    {
      Latitude = location.Coordinate.Latitude,
      Longitude = location.Coordinate.Longitude
    };

    return postion;
  }
  catch (Exception ex)
  {
    . . .
  }

上記のすべてのコードは、ユーザーがアプリケーションのボタンをクリックすると実行されます。次に、GetCurrentPosition() メソッドを実行し、次のコード行を実行しようとすると:

Geoposition location = await geolocator.GetGeopositionAsync();

位置情報機能を使用するユーザーの許可を求めるポップアップ メッセージが表示されました。

だから、質問は次のとおりです。最初に同じことを尋ねることはありますか? つまり、アプリが起動されたときですか?

よろしくお願いいたします。

よろしく!

4

2 に答える 2

4

表示されているポップアップは、プログラムで呼び出すことはできません。GetGeopositionAsync呼び出されると自動的に表示されます。アプリが Web カメラの機能を定義している場合、同じダイアログが表示されます。同様のダイアログは、写真のキャプチャ メソッドが呼び出されたときにのみ表示されます。特定の許可について、事前に「はい」または「いいえ」を取得することはできません。

できることは、ボタンクリックイベントではなく、特定のページでSetMyLocation()メソッドを呼び出すことです。OnNavigatedTo(...)

さらに、コードで権限を設定できます。それはユーザーに完全に依存しています。ユーザーは、チャームの設定 -> 権限タブから権限を許可/ブロックできます。

于 2013-11-07T05:29:46.727 に答える
1

オブジェクトを作成できMessageDialogます。何かのようなもの:

MessageDialog dialog = new MessageDialog("Do you want to allow XXXX to use your location?");
dialog.Commands.Add(new UICommand("Yes"));
dialog.Commands.Add(new UICommand("No"));
var result = await dialog.ShowAsync();
if(result.Label == "Yes")
    App.UseLocation = true; // Where UseLocation is a static property in your app somewhere

これが役に立ち、幸せなコーディングになることを願っています!

于 2013-11-07T04:41:24.387 に答える