0

Windows Phone 8 では、ネイティブ マップ アプリをユーザーの現在の場所に開きたいと考えています。

これに最も近いのはMapsTask でした。説明は私にそれが完璧だと信じさせます:

Center プロパティで指定された場所またはユーザーの現在の場所を中心にしてマップ アプリケーションを起動することをアプリケーションに許可します。SearchTerm が設定されている場合、検索語に一致する場所がマップ上でタグ付けされます。

Center を指定しない場合、ユーザーの現在の場所が使用されます。完全!ただし、center を指定せず、SearchTerm を指定しない場合は、例外がスローされます (設計による)。

そのため、SearchTerm を提供する必要があります。しかし、ユーザーにとってローカルではないものを入力すると、「結果がありません: 検索に一致するものが見つかりませんでした。別のスペルまたは検索語を試してください」というポップアップが表示されます。

これで、ユーザーの場所を自分で取得して、その場所でマップを起動することができましたが、マップ アプリが既にそれを行っていることを考えると、それは間違っているように感じます。何か案は?

4

2 に答える 2

1

Geolocation を自分で取得して map タスクに送信しても問題ありません。これを行うには、GeoLocator のワンタイム ジオロケーション取得を使用します。

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var geoLocator = new Geolocator();
    var geoloc = await geoLocator.GetGeopositionAsync();
    new MapsTask()
    {
        Center = new GeoCoordinate(geoloc.Coordinate.Latitude, geoloc.Coordinate.Longitude),
        ZoomLevel = 10
    }.Show();
}
于 2013-01-08T23:36:36.133 に答える
0

私は現在の場所を取得するためのチュートリアルを書きました。これにより、地図を作成できるワンショットの場所が得られます。

private async void GetCurrentLocation()
{
    Geolocator locationFinder = new Geolocator
    {
        DesiredAccuracyInMeters = 50,
        DesiredAccuracy = PositionAccuracy.Default
    };
    try
    {
        Geoposition currentLocation = await  locationFinder.GetGeopositionAsync(
            maximumAge: TimeSpan.FromSeconds(120),
            timeout: TimeSpan.FromSeconds(10));
            String longitude = currentLocation.Coordinate.Longitude.ToString("0.00");
            String latitude = currentLocation.Coordinate.Latitude.ToString("0.00");
            MyTextBlock.Text = "Long: " + longitude + "Lat: " + latitude;
    }
    catch (UnauthorizedAccessException)
    {
       MessageBox.Show("And Exception Occured");
    }
}

デモ ファイルの完全なコンテンツについては、以下のリンクを参照して ください http://mobile.tutsplus.com/tutorials/windows/windows-phone-8-sdk-geolocation-services/

于 2013-11-17T04:42:42.310 に答える