Skip to content

Интеграция с Яндекс.Навигатором

boiler23 edited this page Oct 31, 2012 · 1 revision

Навигатор умеет обрабатывать следующие интенты из внешних приложений:

  • Показать точку
  • Построить маршрут

Построение маршрутов

Intent:

ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP

Параметры:

in:lat_from:float - широта начальной точки (необязательный)
in:lon_from:float - долгота начальной точки (необязательный)
in:lat_to:float - широта конечной точки
in:lon_to:float - долгота конечной точки

Описание:

Отрывает Навигатор и запрашивает маршрут между указанными двумя точками (Если начальная точка не указана, маршрут будет построен от местоположения пользователя).

Показ точек

Intent:

ru.yandex.yandexnavi.action.SHOW_POINT_ON_MAP

Параметры:

in:lat:float - широта
in:lon:float - долгота
in:zoom:int - масштаб карты, [0-23]
in:desc:string – описание в балуне для точки (необязательный)
in:no-balloon:int – если true, то при открытии карт балун не будет сразу показан для данной точки (необязательный)

Описание:

Открывает Навигатор и центрирует карту на указанной точке и указанном масштабе. Точка отмечается пином с опциональным балуном.

Пример использования Intent'ов в приложении

    // Создаем интент для построения маршрута
    Intent intent = new Intent("ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP");
    intent.setPackage("ru.yandex.yandexnavi");

    PackageManager pm = getPackageManager();
    List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);

    // Проверяем, установлен ли Яндекс.Навигатор
    if (infos == null || infos.size() == 0) {
        // Если нет - будем открывать страничку Навигатора в Google Play
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("market://details?id=ru.yandex.yandexnavi"));
    } else {
        intent.putExtra("lat_from", 55.751802);
        intent.putExtra("lon_from", 37.586684);
        intent.putExtra("lat_to", 55.758192);
        intent.putExtra("lon_to", 37.642817);
    }

    // Запускаем нужную Activity
    startActivity(intent);