Запуск Яндекс.Карт по 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.
При открытии ссылки на мобильных устройствах, система может предложить открыть ссылку в установленном приложении. На компьютерах, ссылка открывается в браузере.