-
Notifications
You must be signed in to change notification settings - Fork 65
Интеграция с Яндекс.Навигатором
Навигатор умеет обрабатывать следующие интенты из внешних приложений:
- Показать точку
- Построить маршрут
ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP
in:lat_from:float
- широта начальной точки (необязательный)
in:lon_from:float
- долгота начальной точки (необязательный)
in:lat_to:float
- широта конечной точки
in:lon_to:float
- долгота конечной точки
Отрывает Навигатор и запрашивает маршрут между указанными двумя точками (Если начальная точка не указана, маршрут будет построен от местоположения пользователя).
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 = 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);