Запуск Яндекс Карт по URL

Мобильное приложение Яндекс Карты можно запускать из других приложений и со страниц сайтов. Можно также запускать веб версию Яндекс Карт, которая не зависит от платформы.

В этом документе описаны способы запуска приложения Яндекс Карты и веб версии Яндекс Карт.

Запуск мобильного приложения Яндекс Карты из браузера

Чтобы дать пользователю возможность запустить приложение Яндекс Карты со страницы, отображаемой в браузере, необходимо сформировать ссылку, соответствующую приложению. Вместо названия сетевого протокола (обычно http или https) в ссылке указывается URL-схема, отвечающая за запуск приложения.

За запуск приложения Яндекс Карты отвечает URL-схема yandexmaps. Ссылка, открывающая карту в приложении Яндекс Карты на платформах Android и iOS, будет выглядеть следующим образом.

<a href="yandexmaps://maps.yandex.ru/?ll=37.62,55.75&z=12">Открыть карту
Москвы в приложении Яндекс Карты</a>

Список параметров, которые можно указать в URL, приведен в разделах Запуск iOS‑приложения Яндекс Карты и Запуск Android‑приложения Яндекс Карты.

Примечание

Ссылку можно формировать динамически, в зависимости от платформы. Информацию о платформе можно извлечь из:

  • объекта navigator, если ссылка формируется на стороне браузера (клиентский JavaScript);

  • HTTP‑заголовков, если ссылка формируется на стороне сервера.

Запуск мобильного приложения Яндекс Карты из нативных приложений

Android

Чтобы запустить приложение Яндекс Карты из Java‑приложения на платформе Android, необходимо создать объект типа Intent. При создании объекта в конструктор передается действие ACTION_VIEW (см. action) и URI.

После этого достаточно вызвать метод startActivity класса Context и соответствующее действию Activity запустится. Например, чтобы открыть в Яндекс Картах карту с заданными координатами центра и масштабом, нужно добавить в приложение следующий код.

Uri uri = Uri.parse("yandexmaps://maps.yandex.ru/?ll=37.62,55.75&z=12");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

Для запуска приложения используется стандартное действие ACTION_VIEW. Координаты центра карты и масштаб указываются в URI.

Список возможных параметров приведен в разделе Запуск Android‑приложения Яндекс Карты.

Если запускаемое приложение не установлено на устройстве, вызов метода startActivity приведет к остановке приложения. Проверить, установлено ли необходимое приложение, можно с помощью метода queryIntentActivities класса PackageManager. Если приложение не установлено, можно открыть страницу Яндекс Карт в Google Play.

Uri uri = Uri.parse("yandexmaps://maps.yandex.ru/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
// Проверяем, установлено ли хотя бы одно приложение, способное выполнить это действие.
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
  startActivity(intent);
} else {
// Открываем страницу приложения Яндекс Карты в Google Play.
  intent = new Intent(Intent.ACTION_VIEW);
  intent.setData(Uri.parse("market://details?id=ru.yandex.yandexmaps"));
  startActivity(intent);
}

iOS

Для запуска внешних приложений из приложений, разрабатываемых на Objective‑C, предназначен метод openURL: класса UIApplication. Методу передается URL, содержащий схему запускаемого приложения, и, при необходимости, параметры запуска. Например, чтобы открыть приложение Яндекс Карты и отобразить карту Москвы, можно воспользоваться следующим кодом.

[[UIApplication sharedApplication] openURL:
 [NSURL URLWithString:@"yandexmaps://maps.yandex.ru/?ll=37.62,55.75&z=12"]];

Здесь yandexmaps — это название URL‑схемы приложения Яндекс Карты. Список возможных параметров приведен в разделе Запуск iOS‑приложения Яндекс Карты.

Перед вызовом метода openURL: имеет смысл проверить, установлено ли приложение Яндекс Карты на устройстве. Для этого можно воспользоваться методом canOpenURL:. Если приложение не установлено, можно открыть страницу Яндекс Карт в App Store.

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"yandexmaps://"]]) {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yandexmaps://maps.yandex.ru/?ll=37.62,55.75&z=12"]];
} else {
// Открываем страницу приложения Яндекс Карты в App Store.
   [[UIApplication sharedApplication] openURL:
    [NSURL URLWithString:@"https://itunes.apple.com/ru/app/yandex.maps/id313877526?mt=8"]];
}

Запуск веб-версии Яндекс Карт

Для запуска веб-версии Яндекс Карт нужно передать в ссылка параметры запроса. Ссылка будет выглядеть следующим образом:

<a href="https://yandex.ru/maps/?ll=37.62,55.75&z=12">Открыть карту
        Москвы в веб-версии Яндекс Карт</a>

Список доступных параметров доступен в разделе Web.

При открытии ссылки на мобильных устройствах, система может предложить открыть ссылку в установленном приложении. На компьютерах, ссылка открывается в браузере.