Запуск Яндекс.Карт по 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.

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