Перейти к основному содержимому

Android SDK

Android SDK позволяет добавить карту 2ГИС в ваше Android-приложение. С помощью SDK можно отобразить карту на экране, получать информацию об объектах карты, строить маршруты, использовать навигатор и т. д.

Примеры использования SDK см. в разделе Примеры. Описание всех классов и методов см. в разделе Справочник API.

Картографические данные поддерживают стандарты OGC.

Версии SDK

Пакеты Android SDK доступны в двух версиях:

  • Full — полная версия, которая позволяет:
    • Добавлять карту в приложение и управлять ей: добавлять маркеры и геометрические фигуры, управлять движением камеры, отображать слои (например, пробки), работать со стилями карты и т. д.
    • Искать объекты в справочнике: организации, здания, места и другие.
    • Работать с навигатором в приложении в трёх режимах: свободная навигация, ведение по маршруту и симуляция ведения.
    • Строить оптимальные маршруты на карте, в том числе внутри зданий.
    • Использовать офлайн-данные.
  • Map — облегчённая версия, которая позволяет:
    • Добавлять карту в приложение и управлять ей: добавлять маркеры и геометрические фигуры, управлять движением камеры, отображать слои (например, пробки), работать со стилями карты и т. д.
    • Искать объекты в справочнике: организации, здания, места и другие.
предупреждение

Не используйте версии Full и Map вместе: это приведёт к ошибке сборки.

API для работы SDK

В зависимости от нужных функциональностей, для работы SDK требуются ключи доступа к API карт, поиска и навигации. Доступные возможности зависят от версии SDK: Full или Map.

При использовании ключа оплачивается только доступ к используемым API, в зависимости от количества отправленных запросов (и в некоторых случаях — полученных ответов). Вы можете работать с ключами в личном кабинете Менеджер Платформы.

Карта (для Full и Map)

Подробнее о доступных возможностях см. в инструкции Карта.

Функциональность
API
Создание карты в приложении
(класс MapView)
Отображение пробок на карте
(класс TrafficSource)
Regions API

Справочник (для Full и Map)

Подробнее о доступных возможностях см. в инструкции Справочник.

Функциональность
API
Создание поискового движка
(класс SearchManager)
Regions API
Получение результатов поиска
(метод SearchManager.search())
Получение некоторой информации об объектах в доступно только при дополнительной настройке ключа за отдельную плату: см. раздел Структура данных объекта.
Поиск объектов в справочнике по идентификатору
(метод SearchManager.searchById())
Формирование поисковых подсказок
(метод SearchManager.suggest())
Suggest API

Маршруты (только для Full)

Подробнее о доступных возможностях см. в инструкции Маршруты.

Функциональность
API
Поиск оптимального маршрута с учётом пробок
(класс TrafficRouter)
  • Directions API — все маршруты, кроме общественного транспорта.
  • Routing API — маршруты общественного транспорта.
  • Truck Directions API — зоны движения грузовиков по пропускам.
Отображение маршрутов на карте
(класс RouteEditorSource)
  • Directions API — все маршруты, кроме общественного транспорта.
  • Routing API — маршруты общественного транспорта.
  • Truck Directions API — зоны движения грузовиков по пропускам.

Навигация (только для Full)

Подробнее о доступных возможностях см. в инструкции Навигация.

Функциональность
API
Запуск навигатора (метод NavigationManager.start()):
  • Directions API — все маршруты, кроме общественного транспорта.
  • Routing API — маршруты общественного транспорта.
  • Truck Directions API — зоны движения грузовиков по пропускам.
Поиск альтернативных маршрутов
(класс AlternativeRouteSelector)
  • Directions API — все маршруты, кроме общественного транспорта.
  • Routing API — маршруты общественного транспорта.
  • Truck Directions API — зоны движения грузовиков по пропускам.
Отображение дорожных событий
(класс RoadEventSource)
Regions API
Вычисление местоположения устройства по сотовым вышкам и точкам доступа Wi-Fi
(использование RadarApiSettings в DefaultLocationSource)
Radar API

Требования к устройствам

  • Android 6.0 (Marshmallow) и выше.
  • Поддерживаемые архитектуры: x86_64, x86, armeabi-v7a, arm64-v8a.
  • OpenGL ES 3.1.

Демонстрационный проект

Демонстрационное приложение с исходным кодом см. в GitHub-репозитории.

Размер приложения

Размер вашего приложения может заметно увеличиться после добавления SDK в проект. См. ниже описание причины и возможные стратегии для борьбы с этим увеличением.

Процессорные архитектуры

Современные устройства Android могут иметь различные типы процессоров: x86-64, x86, ARMv7 и ARMv8. Для кода, написанного на Java или Kotlin, это не является проблемой, так как он исполняется в виртуальной машине и абстрагируется от конкретного железа. Однако, для нативного кода тип процессора играет важную роль.

Наша библиотека содержит четыре версии для всех типов ABI (Application Binary Interface), чтобы обеспечить поддержку всех этих типов процессоров.

Оптимизация размера

Чтобы сократить размер приложения, вы можете использовать разделение APK по типам ABI. Это позволит собирать и загружать только необходимые библиотеки для конкретного устройства пользователя. См. инструкции по сборке и загрузке в документации Android. Если вы используете Android App Bundle, Google Play может автоматически пересобирать приложение под нужные типы процессоров для конкретных устройств пользователей.

Проверка размера

Чтобы увидеть фактический размер APK, который будет загружаться пользователем, рекомендуется использовать инструмент bundletool. Это поможет получить APK, содержащий только необходимые библиотеки для конкретного устройства:

  1. Соберите app bundle, выбрав этот вариант сборки в Gradle.
  2. Получите APK по необходимым критериям (например, только для arm64-v8a) из app bundle с помощью bundletool.

Полученный APK будет отражать реальный размер, который получит пользователь при загрузке приложения из Google Play.