Вызов навигации / Карт / диска с адресом в приложении WP8.1

#c# #navigation #maps #windows-phone-8.1 #drive

#c# #навигация #Карты #windows-phone-8.1 #диск

Вопрос:

Мне было интересно, можно ли вызвать навигационное приложение по умолчанию в моем приложении Windows Phone 8.1. У меня есть адрес, и я хотел бы, чтобы пользователь нажал кнопку и мог перейти к этому адресу через приложение навигации по умолчанию. Если это возможно, как мне это сделать?

Спасибо за ваше время,

Йохан

Ответ №1:

Вы можете запускать пошаговые инструкции, используя схемы ms-drive-to и ms-walk-to (в зависимости от типа желаемых направлений), но сначала вам нужно получить геокоординацию для имеющегося у вас адреса. Поскольку вы ориентируетесь на Windows Phone 8.1, вы можете использовать класс MapLocationFinder в Windows.Услуги.Пространство имен Maps.

 string locationName = "Empire State Building";
string address = "350 5th Avenue, New York City, New York 10018";

var locFinderResult = await MapLocationFinder.FindLocationsAsync(
    address, new Geopoint(new BasicGeoposition()));

// add error checking here

var geoPos = locFinderResult.Locations[0].Point.Position;

var driveToUri = new Uri(String.Format(
     "ms-drive-to:?destination.latitude={0}amp;destination.longitude={1}amp;destination.name={2}", 
     geoPos.Latitude, 
     geoPos.Longitude, 
     locationName));

Launcher.LaunchUriAsync(driveToUri);                    
 

Ответ №2:

официальное решение:

 Uri uri = new Uri("ms-drive-to:?destination.latitude="   latitude.ToString(CultureInfo.InvariantCulture)  
            "amp;destination.longitude="   longitude.ToString(CultureInfo.InvariantCulture))

        var success = await Windows.System.Launcher.LaunchUriAsync(uri);

        if (success)
        {
            // Uri launched.
        }
        else
        {
            MessageBox.Show("error");
        }
 

Но с этим решением есть проблема.

Если вы используете программы Nokia (ЗДЕСЬ ), все работает нормально.

если вы хотите использовать waze, вы должны добавить origin.latitude и origin.longitude.

на странице MSDN сказали, что это необязательно, но на самом деле вы должны это написать.

Я уже не могу загружать moovit, но если у кого-то возникнут проблемы, это мне очень поможет.

Комментарии:

1. это еще один ответ, более эффективный с waze

2. Больше похоже на ошибку с Waze, что они неправильно реализовали схему…