Интеграция 2ГИС SDK в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция 2ГИС SDK в мобильное приложение
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Интеграция 2ГИС SDK в мобильное приложение

2ГИС SDK (DGis Mobile SDK) — разумный выбор, когда нужны детальные данные о зданиях, офисах, этажах и организациях в российских городах. Карты 2ГИС работают офлайн из коробки — пользователь может скачать регион и навигировать без интернета. Это отличает SDK от Google Maps и Яндекс в сценариях, где связь нестабильна.

Подключение SDK

API key выдаётся через dev.2gis.ru. SDK доступен для Android и iOS, Flutter-обёртка существует, но официально поддерживается хуже.

Android (build.gradle):

repositories {
    maven { url = uri("https://artifactory.2gis.dev/sdk-maven-release") }
}

dependencies {
    implementation("ru.dgis.sdk:sdk-map:1.3.0")
    // или sdk-full для поиска и маршрутов
}

iOS (Swift Package Manager):

// Package.swift
.package(url: "https://github.com/2gis/mobile-sdk-full-swift-package", from: "1.3.0")

Android: инициализация и базовая карта

import ru.dgis.sdk.DGis

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")
        )
    }
}

2ГИС требует два разных ключа: directory — для поиска организаций и справочника, map — для отображения карты. Перепутать или использовать один ключ для обоих — частая ошибка при первой интеграции.

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ГИС — главное преимущество SDK. Поиск по названию, категории, адресу внутри видимой области:

val searchManager = SearchManager.createSmartSearchManager(sdkContext)

val searchQuery = QueryBuilder("кофейня")
    .setSearchArea(mapView.map.visibleArea)
    .build()

val searchTask = 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ГИС без дополнительных запросов.

Офлайн-карты

Скачивание региона — через RegionManager:

val regionManager = sdkContext.getRegionManager()
regionManager.regions.onEach { regions ->
    val novosibirsk = regions.find { it.name.contains("Новосибирск") }
    novosibirsk?.let { region ->
        regionManager.downloadRegion(region.id)
    }
}.launchIn(lifecycleScope)

После скачивания карта, поиск и маршруты работают без сети. Размер региона для крупного города — 200-800 МБ. Предупредите пользователя перед скачиванием через Wi-Fi.

Маршруты

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>, routeSearchOptions: RouteSearchOptions) {
        routes.firstOrNull()?.let { route ->
            val routeMapObject = RouteMapObject(route)
            mapObjectManager.addObject(routeMapObject)
        }
    }
    override fun onError(error: SearchError) {}
})

Особенности и ограничения

2ГИС SDK тяжелее Google Maps: полная версия добавляет ~50-60 МБ к APK. Для приложений с жёсткими требованиями к размеру используйте только sdk-map без справочника. Кастомизация стилей карты ограничена по сравнению с Mapbox — нельзя полностью перекрасить все слои через JSON-стиль.

Сроки

1–3 дня. Карта с маркерами — 1 день. Поиск организаций + маршруты — 2–3 дня. Стоимость рассчитывается индивидуально.