-
Notifications
You must be signed in to change notification settings - Fork 65
Интеграция с Мобильными Яндекс.Картами
На текущий момент Мобильные Яндекс Карты (МЯК) умеют обрабатывать следующие интенты из внешних приложений:
- Показать точку
- Построить маршрут
- Запустить поиск
- Показать панораму
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, то будут показаны пробки (необязательный)
Открывает МЯК и запрашивает маршрут между указанными двумя точками.
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, то при открытии карт балун не будет сразу показан для данной точки (необязательный)
Открывает МЯК и центрирует карту на указанной точке и указанном масштабе. Точка отмечается пином с опциональным балуном.
ru.yandex.yandexmaps.action.SEARCH_ON_MAP
in:text:string
– поисковый запрос, который нужно выполнить (например "аптека")
in:where:string
– текстовое уточнение, где выполнить поисковый запрос (например "таганка") (необязательный)
in:sll:string
– центр поискового окна, широта и долгота, разделенные запятой (необязательный)
Открывает МЯК и запускает поиск на карте по указанному запросу.
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 = 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);