Разработка мобильного приложения для навигации по городу

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка мобильного приложения для навигации по городу
Сложный
от 2 недель до 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

Разработка мобильного приложения для навигации по городу

Навигационное приложение — один из самых технически насыщенных типов мобильных продуктов. Здесь сходятся GPS, картографические данные, алгоритмы маршрутизации, TTS и real-time трафик. Разрабатывать с нуля навигационный движок нет смысла — но правильно интегрировать готовые SDK и выстроить пользовательский опыт — отдельная серьёзная задача.

Выбор картографической платформы

Первое архитектурное решение — какой SDK использовать. Это определяет стоимость, возможности и ограничения на годы вперёд.

Платформа Маршрутизация Трафик Офлайн Кастомный стиль Стоимость
Google Maps SDK + Navigation SDK Отлично Да (реальное время) Нет Ограниченно Высокая при объёме
Mapbox Отлично Через Isochrone API Да (OfflineManager) Полная свобода Средняя
HERE Maps Хорошо Да Да Средняя Средняя
2GIS Хорошо для СНГ Ограниченно Да Ограниченно Низкая для СНГ
OpenStreetMap + OSRM Open Source Нет Зависит от хостинга Полная Серверные расходы

Google Navigation SDK даёт лучший turn-by-turn опыт из коробки, но лицензия запрещает отображать конкурирующие сервисы рядом с картой. Mapbox — максимальная гибкость, офлайн-карты, кастомные стили через Mapbox Studio.

GPS и локализация в реальном времени

CLLocationManager / FusedLocationProviderClient — базовый GPS. Для навигации важно:

  • desiredAccuracy: kCLLocationAccuracyBestForNavigation (iOS) — максимальная точность, высокое энергопотребление
  • distanceFilter: 5 метров — обновление при каждом значимом движении
  • Фоновая работа: location background mode + allowsBackgroundLocationUpdates = true

Map matching — привязка GPS-точек к дорожной сети. Raw GPS прыгает по 10-30 метров, особенно между зданиями. Mapbox Map Matching API принимает набор координат и возвращает трек, привязанный к дорогам. Без этого машина «едет сквозь здания» на карте.

Для пешеходной навигации map matching важен меньше — пешеход может идти где угодно, строгая привязка к дорогам мешает.

Определение направления движения

Compass heading (CLHeading / SensorManager.getDefaultSensor(TYPE_ROTATION_VECTOR)) — для пешехода. Orientation of velocity vector — для автомобильной навигации: направление берётся из последних двух GPS-точек, а не из компаса (точнее при движении). При скорости < 5 км/ч — переключаемся обратно на компас.

Поворот карты по направлению движения: GMSCameraUpdate.setTarget(_:bearing:) (Google) или MapboxMap.setCamera(CameraOptions(bearing:)). Плавный поворот через анимацию с CATransaction / анимированным camera update.

Turn-by-turn и голосовые подсказки

Готовые SDK (Mapbox Navigation SDK, Google Navigation SDK) предоставляют NavigationViewController / MapboxNavigationView — полноценный UI навигации. Кастомизация: цвета, иконки, скрытие/показ элементов через configuration objects.

Для голосовых подсказок: Mapbox Navigation SDK использует SpeechSynthesizer с возможностью замены на Amazon Polly или кастомный TTS. Google Navigation SDK — встроенный TTS без прямого доступа. AVSpeechSynthesizer (iOS) / Android TextToSpeech если строим подсказки самостоятельно.

Очень важно: прерывание воспроизводимого аудио (музыки, подкаста) на время подсказки. AVAudioSession.sharedInstance().setCategory(.playback, options: .duckOthers) на iOS — снижает громкость другого аудио, не останавливает. AudioFocusRequest.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK на Android — аналог.

Пересчёт маршрута и альтернативные маршруты

Отклонение от маршрута → пересчёт. Mapbox Navigation SDK делает это автоматически при отклонении более чем на RouteOptions.maximumAllowedDivergence (по умолчанию 20 метров от маршрута). Пересчёт занимает 0.5-2 секунды, за это время навигация продолжается по старому маршруту.

Альтернативные маршруты при старте: Google Directions API и Mapbox Directions API возвращают до 3 альтернатив. Отображение на карте тонкими линиями, tap для переключения.

Учёт трафика и ETA

Реальное время прибытия с учётом трафика — через Directions API с departing_now. Обновление ETA каждые 30-60 секунд при изменении дорожной обстановки. Если ожидаемое время прибытия увеличилось значительно — пересчёт маршрута автоматически или по предложению пользователю.

Офлайн-навигация

Mapbox OfflineManager — скачать тайлы региона. Маршрутизация офлайн — OSRM или Valhalla, развёрнутые на сервере, кешированные маршруты. Для полного офлайна на устройстве — GraphHopper Embedded (Java), интеграция в Android через JNI или мобильный граф-файл (~100-500 MB для страны).

Этапы: выбор картографической платформы → GPS и map matching → навигационный движок → голосовые подсказки → офлайн → тестирование на реальных маршрутах → публикация.

Срок: от 10 до 20 недель. Стоимость рассчитывается индивидуально.