Skip to content

Интеграция с Мобильными Яндекс.Картами

boiler23 edited this page Oct 31, 2012 · 1 revision

На текущий момент Мобильные Яндекс Карты (МЯК) умеют обрабатывать следующие интенты из внешних приложений:

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

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

Intent:

ru.yandex.yandexmaps.action.BUILD_ROUTE_ON_MAP

Параметры:

in:lat_from:float - широта начальной точки
in:lon_from:float - долгота начальной точки
in:lat_to:float - широта конечной точки
in:lon_to:float - долгота конечной точки
in:show_jams:int – если 1, то будут показаны пробки (необязательный)

Описание:

Открывает МЯК и запрашивает маршрут между указанными двумя точками.

Показ точек

Intent:

ru.yandex.yandexmaps.action.SHOW_POINT_ON_MAP

Параметры:

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

Описание:

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

Поиск

Intent:

ru.yandex.yandexmaps.action.SEARCH_ON_MAP

Параметры:

in:text:string – поисковый запрос, который нужно выполнить (например "аптека")
in:where:string – текстовое уточнение, где выполнить поисковый запрос (например "таганка") (необязательный)
in:sll:string – центр поискового окна, широта и долгота, разделенные запятой (необязательный)

Описание:

Открывает МЯК и запускает поиск на карте по указанному запросу.

Панорамы

Intent:

ru.yandex.yandexmaps.action.SHOW_STREET_VIEW

Параметры:

in:streetview.point.lat:double – широта
in:streetview.point.lon:double – долгота
in:streetview.point.dir:double – направление взгляда [0–360) (необязательный)

Описание:

Открывает МЯК и показывает панораму улиц в данной точке.

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

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

    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.yandexmaps"));
    } 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);