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

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация карты расположения IoT-устройств в мобильном приложении
Простой
от 4 часов до 2 дней
Часто задаваемые вопросы

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

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

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

  • 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

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

Сто датчиков на карте. Половина — онлайн, треть — в офлайне уже три часа, несколько — с разрядившейся батарейкой. Пользователю нужно за секунду понять, где проблема, и нажать на конкретный датчик, чтобы увидеть последние показания. Это стандартная задача IoT-мониторинга — и она решается без экзотики.

Отображение устройств на карте

Маркер IoT-устройства несёт статус: online, offline, warning, critical. Цветовое кодирование — зелёный/серый/жёлтый/красный. Иконка меняется при обновлении через WebSocket без перезагрузки карты.

На Android Google Maps SDK: обновляем BitmapDescriptor маркера через marker.setIcon(getStatusIcon(device.status)). Чтобы не создавать новый Bitmap на каждое обновление статуса — кешируем иконки по четырём статусам в HashMap<Status, BitmapDescriptor> при старте.

На iOS MapKit: MKAnnotationView.image переназначаем через mapView(_:viewFor:) при изменении данных. Для плавного перехода цвета — UIView.transition(with:duration:options:animations:) на смену иконки.

В Flutter через Google Maps Flutter plugin: Marker(icon: BitmapDescriptor.fromBytes(pngBytes)). Важно: BitmapDescriptor.fromAssetImage вызывается асинхронно, если вызывать его при каждом обновлении маркера — будут джанки. Создаём все иконки заранее в initState и кешируем.

Кластеризация при большом количестве устройств

При 100+ устройствах в одном viewport кластеризация обязательна. Для Flutter: google_maps_cluster_manager package. Для Android нативно: com.google.maps.android:android-maps-utils с DefaultClusterRenderer. Для iOS: GMUClusterManager из Maps Utils SDK.

Кастомный рендер кластера: показываем не просто число, а статус «худшего» устройства в кластере — если хоть одно critical, кластер красный. Это позволяет диспетчеру мгновенно увидеть проблемные зоны без раскрытия каждого кластера.

Детальный экран устройства

Нажатие на маркер — bottom sheet или navigation push с последними данными устройства: координата, время последнего пакета, показания датчиков, заряд батареи, уровень сигнала. Данные запрашиваются в момент открытия через REST API /devices/{id}/latest, кешируются локально на 30 секунд.

История местоположения: если устройство мобильное (трекер, счётчик на транспорте) — трек за последние N часов. Если стационарное (датчик на здании) — только текущая позиция и факт онлайна.

Обновление в реальном времени

WebSocket-подписка на обновления флота. Важно не перерисовывать всю карту при каждом сообщении — обновляем только изменившиеся маркеры. Diff-подход: сравниваем device.updatedAt и обновляем только те объекты, где timestamp изменился.

При закрытии приложения WebSocket закрывается. При возврате — пересоздаётся. Обработка reconnect: экспоненциальная задержка (1 сек → 2 → 4 → 8 → max 30 сек).

Поиск и фильтрация устройств

Список устройств рядом с картой — фильтрация по статусу, типу, группе. На Flutter — ListView.builder с локальной фильтрацией по List<Device>, без дополнительных запросов к серверу. Поиск по имени устройства — TextEditingController с debounce 300 мс.

На Android — RecyclerView с DiffUtil.Callback для оптимального diff при обновлении. Быстрый скролл по 200+ устройств без лагов за счёт view recycling и @Stable-аннотаций на моделях (Compose).

Сортировка: по статусу (критичные вверху), по расстоянию от пользователя, по имени. Сортировка по расстоянию требует текущую геолокацию пользователя — запрашиваем один раз при открытии экрана, не обновляем постоянно.

Сроки

Карта устройств с кластеризацией, цветовыми статусами, детальным экраном и списком с фильтрацией при готовом API: 4 часа — 2 рабочих дня в зависимости от кастомизации маркеров и требований к UI. Стоимость рассчитывается после уточнения требований.