Отметим: когда мобильное приложение должно показывать детальные карты с внутренней планировкой зданий, этажами и офисами, стандартные Google Maps или Яндекс.Карты не подходят — они не содержат такой информации. 2ГИС SDK решает эту задачу, предоставляя уникальные данные: схемы этажей, точные контакты организаций, маршруты внутри зданий. Мы интегрировали его в десятках проектов и знаем все подводные камни: от правильной настройки key hashes до оптимизации офлайн-карт. Наш опыт — более 30 успешных интеграций, средняя стоимость проекта составляет от 150 000 до 400 000 ₽. Предлагаем полный цикл работ: от анализа требований до публикации в магазины. Свяжитесь с нами для бесплатной консультации.
Какие проблемы решает 2ГИС SDK?
Key hashes и provisioning profiles. На Android неправильная генерация key hash приводит к ошибке аутентификации SDK — приложение падает с DGisException. На iOS неверный provisioning profile блокирует работу пуш-уведомлений и фоновых задач. Мы автоматизируем проверку этих настроек на CI/CD.
Размер APK. Полный SDK добавляет ~50 МБ. Клиенты часто забывают про это на этапе архитектуры, и потом приходится вырезать ненужные модули. Мы с самого начала выбираем только нужные компоненты (sdk-map, sdk-full) и настраиваем ProGuard/R8 для удаления dead code.
Офлайн-данные. Размер региона для Москвы — 800 МБ. Если не продумать механизм фоновой загрузки и хранения, приложение вылетит по памяти. Используем RegionManager с контролем свободного места и планировщиком загрузки по Wi-Fi.
Как подключить 2ГИС SDK?
Подключение начинается с получения двух ключей на dev.2gis.ru: directory для справочника и map для карты. Для Android добавляем репозиторий и зависимость:
repositories { maven { url = uri("https://artifactory.2gis.dev/sdk-maven-release") } } dependencies { implementation("ru.dgis.sdk:sdk-map:1.3.0") } Для iOS используем Swift Package Manager: https://github.com/2gis/mobile-sdk-full-swift-package. Инициализация в Application:
class App : Application() { lateinit var sdkContext: ru.dgis.sdk.Context override fun onCreate() { super.onCreate() sdkContext = DGis.initialize( appContext = this, apiKey = ApiKeys(directory = "YOUR_DIRECTORY_KEY", map = "YOUR_MAP_KEY") ) } } Типичная ошибка — использовать один ключ для обоих. В результате SDK молча не загружает карту. Мы гарантируем, что в наших проектах эта настройка выполняется корректно, и предоставляем автоматизированные тесты для проверки.
Как отобразить карту с маркерами?
Создаём MapFragment и центрируем на нужном городе:
class MapFragment : Fragment() { private val mapObjectManager by lazy { MapObjectManager(mapView.map) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val mapView: MapView = view.findViewById(R.id.mapView) mapView.map.move( CameraPosition( point = GeoPoint(54.9885, 82.9207), zoom = Zoom(13f) ) ) } } Стартовая позиция выбирается по геолокации пользователя или региону приложения.
Как реализовать поиск организаций?
Главное преимущество 2ГИС — встроенный справочник с названиями, адресами, рейтингами и часами работы. Поиск по видимой области:
val searchManager = SearchManager.createSmartSearchManager(sdkContext) val searchQuery = QueryBuilder("кофейня") .setSearchArea(mapView.map.visibleArea) .build() searchManager.search(searchQuery, object : SearchListener { override fun onSearchCompleted(searchResult: SearchResult) { for (item in searchResult.items) { item.markerPosition?.let { pos -> val marker = DgisMapObject.createMarker( options = MarkerOptions( position = pos, icon = imageFromResource(R.drawable.ic_coffee) ) ) mapObjectManager.addObject(marker) } } } override fun onSearchError(error: SearchError) {} }) Результаты содержат все данные справочника без дополнительных запросов. Для коммерческих приложений это сокращает время разработки на 2–3 дня и экономит до 40% бюджета на интеграцию карт.
Как работают офлайн-карты?
SDK позволяет загрузить регион через RegionManager. После загрузки карта, поиск и маршруты работают полностью офлайн. Размер региона для крупного города — 200–800 МБ. Важно предупредить пользователя о загрузке по Wi-Fi и проверять свободное место. Мы встраиваем эту логику в стандартный процесс интеграции.
Сравним 2ГИС с конкурентами:
| Параметр | 2ГИС SDK | Google Maps SDK | Яндекс Карты SDK |
|---|---|---|---|
| Детализация зданий (этажи, офисы) | Да | Нет | Нет |
| Офлайн-навигация | Полная | Ограниченная | Ограниченная |
| Размер офлайн-пакета | 200-800 МБ | 100-300 МБ | 150-500 МБ |
| Справочник организаций | Встроенный | Через Places API (требует сети) | Через API (требует сети) |
В офлайн-сценариях загрузка карт 2ГИС происходит в 2 раза быстрее, чем у Google Maps, при тех же условиях.
Как построить маршрут?
Для построения маршрута используем RouteSearchManager:
val routeSearchManager = RouteSearchManager(sdkContext) val routeSearchOptions = RouteSearchOptions( startPoint = RouteSearchPoint(GeoPoint(54.9885, 82.9207)), finishPoint = RouteSearchPoint(GeoPoint(54.9782, 82.8971)), transportOptions = RouteSearchTransportOptions.Car ) routeSearchManager.findRoute(routeSearchOptions, object : RouteSearchListener { override fun onRoutesFound(routes: List<TrafficRoute>, ...) { routes.firstOrNull()?.let { route -> val routeMapObject = RouteMapObject(route) mapObjectManager.addObject(routeMapObject) } } override fun onError(error: SearchError) {} }) Маршруты работают и онлайн, и офлайн после загрузки региона. Поддерживаются автомобильные, пешеходные и на общественном транспорте.
Что входит в работу?
Мы предлагаем не только подключение SDK, но и полный цикл работ:
- Документация по API и архитектуре решения
- Настройка доступов (App Store Connect, Google Play Console, TestFlight)
- Обучение команды заказчика эксплуатации SDK
- Техническая поддержка в течение 3 месяцев после сдачи
Процесс работы:
- Анализ требований — определяем нужные функции (карта, поиск, маршруты, офлайн).
- Проектирование — выбираем модули SDK, оптимизируем размер APK/IPA.
- Разработка — реализуем интеграцию, кастомизируем внешний вид карты.
- Тестирование — проверяем на реальных устройствах в онлайн и офлайн режимах.
- Публикация — настраиваем key hashes, provisioning profiles, готовим сборку.
- Документация и обучение — передаём инструкции и проводим воркшоп для ваших разработчиков.
Сроки и стоимость:
| Этап | Длительность | Результат |
|---|---|---|
| Анализ | 0.5 дня | Техническое задание |
| Разработка | 1-3 дня | Рабочая интеграция |
| Тестирование | 1 день | Отчёт о тестировании |
| Публикация | 0.5 дня | Готовое приложение |
Стоимость интеграции рассчитывается индивидуально в зависимости от набора функций и сложности. Свяжитесь с нами — мы оценим проект бесплатно в течение одного дня.
Почему стоит выбрать нашу интеграцию?
Типичные ошибки при самостоятельной интеграции:
- Использование одного API-ключа для карты и справочника.
- Забывают настроить key hash на Android — приложение падает.
- Не учитывают размер офлайн-пакетов, и пользователи жалуются на расход памяти.
- Не проверяют поведение SDK на эмуляторах — многие функции работают только на реальных устройствах.
Мы гарантируем, что в наших интеграциях все эти ошибки исключены. Предоставляем бесплатную консультацию и техническое сопровождение после сдачи. Закажите оценку вашего проекта — получите консультацию прямо сейчас.
Официальная документация 2ГИС SDK: https://docs.2gis.com/sdk/







