Реализация кастомных стилей карты в мобильном приложении

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

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

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

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

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

Реализация кастомных стилей карты в мобильном приложении

Серая карта Google с зелёными парками — узнаваемый дефолт, который сразу говорит «мы не заморачивались с дизайном». Кастомный стиль интегрирует карту в визуальный язык приложения, убирает лишние POI и выделяет то, что важно именно вашему пользователю.

Инструменты для создания стиля

Google Maps: Google Maps Platform Styling Wizard генерирует JSON-конфигурацию стиля. Более мощный вариант — Snazzy Maps с библиотекой готовых стилей. JSON описывает каждый слой карты: дороги, здания, водоёмы, метки, POI — с настройками цвета, видимости и веса.

Mapbox: Studio с визуальным редактором и экспортом стиля как URL mapbox://styles/.... Mapbox гибче в плане кастомизации: можно добавлять собственные слои с данными поверх базовой карты.

Apple Maps (MapKit): начиная с iOS 16 появился MKMapConfiguration с выбором между .standard, .hybrid и .imagery. Кастомного JSON-стиля нет — только выбор схемы (светлая/тёмная через colorScheme) и набора показываемых POI через pointOfInterestFilter.

Применение JSON-стиля на iOS

let style = """
[{
  "featureType": "poi",
  "stylers": [{"visibility": "off"}]
},{
  "featureType": "transit",
  "stylers": [{"visibility": "off"}]
},{
  "featureType": "road",
  "elementType": "geometry",
  "stylers": [{"color": "#1a1a2e"}]
}]
"""

if let mapStyle = try? GMSMapStyle(jsonString: style) {
    mapView.mapStyle = mapStyle
}

JSON стиля лучше хранить как файл .json в Bundle, а не строку в коде: GMSMapStyle(contentsOfFileURL: Bundle.main.url(forResource: "map_style", withExtension: "json")!). При ошибке парсинга GMSMapStyle бросает исключение — обязательно оборачивать в try? и предусмотреть fallback на стандартный стиль.

Android

val success = map.setMapStyle(
    MapStyleOptions.loadRawResourceStyle(context, R.raw.map_style)
)
if (!success) {
    Log.e("MapStyle", "Style parsing failed")
}

R.raw.map_style — файл map_style.json в res/raw/. При неудачном парсинге метод возвращает false без исключения — не забыть проверить.

Тёмная тема

Для поддержки тёмной темы не делаем два разных стиля — используем параметры в JSON с переменными, или переключаем между двумя заранее загруженными объектами GMSMapStyle / MapStyleOptions при смене UIUserInterfaceStyle / Configuration.uiMode.

На iOS подписываемся на traitCollectionDidChange(_:) и переключаем стиль. На Android — AppCompatDelegate.getDefaultNightMode() при инициализации карты.

Mapbox как альтернатива

Если нужны полностью кастомные слои — собственные данные поверх базовой карты, анимированные линии маршрутов, 3D-здания с кастомными текстурами — Mapbox GL Native (iOS/Android) или mapbox_maps_flutter. Стиль описывается через Mapbox Style Specification, хостится в Mapbox Studio или self-hosted на своём CDN.

Разница в стоимости: Google Maps бесплатен до 28 000 загрузок карты в месяц, Mapbox — до 50 000. При больших объёмах Mapbox выгоднее.

Срок: один-два дня — создание стиля, интеграция в приложение, поддержка светлой/тёмной темы.