Разработчикам: запуск навигатора 2ГИС через deeplink

Запуск

Чтобы запускать приложение 2ГИС из других приложений и с веб-страниц, используйте URL-схему dgis://

Вызов приложения 2ГИС на мобильных устройствах

iOS
Android

Чтобы запустить 2ГИС из Android‑приложения:

  1. Создайте объект типа Intent. В конструктор передайте действие ACTION_VIEW (см. action) и URI, содержащий схему dgis.

  2. Вызовите метод startActivity класса Context, и Activity приложения 2ГИС запустится.

    У 2ГИС есть два приложения: 2ГИС и 2ГИС beta (публичная бета-версия). Если вы вызовете метод setPackage ("ru.dublgis.dgismobile"), то в этом случае обработку объекта Intent выполнит именно приложение 2ГИС. Если вызвать метод setPackage ("ru.dublgis.dgismobile4preview"), то будет открываться приложение 2ГИС beta. Если не указать пакет, ОС самостоятельно определит, установлены ли на устройстве приложения от 2ГИС, которые могут обработать Intent. В том случае, если у пользователя одновременно стоят 2ГИС и 2ГИС beta, он увидит предложение выбрать одно из них.

Uri uri = Uri.parse("dgis://");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

intent.setPackage("ru.dublgis.dgismobile"); // Если не планируете работать с публичной бета-версией, эту строчку надо указать

startActivity(intent);

Если 2ГИС не установлен

Перед тем как запустить 2ГИС, стоит проверить, установлено ли приложение на устройстве. Если 2ГИС не установлен, можно открыть его страницу в Google Play.

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

Uri uri = Uri.parse("dgis://");

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.dublgis.dgismobile"));

startActivity(intent);

}

Как построить маршрут

Если вам нужно построить маршрут, сформируйте URL следующим образом.

dgis://2gis.ru/routeSearch/rsType/<type>/from/<lon>,<lat>/to/<lon>,<lat>

  • from/<lon>,<lat> используется для задания точки старта,
  • rsType/<type> используется для задания типа транспорта,
  • to/<lon>,<lat> используется для задания точки финиша.

Используются следующие параметры:

  • type, тип данных: string. Тип маршрута: car (автомобильный маршрут), ctx (общественный транспорт), pedestrian (пеший маршрут), taxi (маршрут на такси). Например, если параметр type/car, то строится маршрут с использованием автомобильного транспорта.
  • lon, тип данных: float. Долгота.
  • lat, тип данных: float. Широта.

Пример URL:

dgis://2gis.ru/routeSearch/rsType/car/from/30.333494,59.947164/to/30.149939,59.849767

При открытии этой ссылки в приложении 2ГИС у вас построится маршрут из центра Санкт-Петербурга. 

Маршрут может строиться без указания начальной точки. В таком случае в качестве точки отправления подставляется текущее местоположение пользователя (если его возможно определить).

Пример URL:

dgis://2gis.ru/routeSearch/rsType/car/to/30.149939,59.849767