Сегодня расскажем немного о том как работает офлайн режим в нашем Flutter SDK
Многие навигационные приложения сталкиваются с одной и той же проблемой: интернет не всегда доступен.
- туннели
- сельская местность
- нестабильный мобильный интернет
- корпоративные устройства с ограниченной сетью
Чтобы приложение продолжало работать в таких условиях, Qorvia Maps SDK включает полноценную систему офлайн-режима.
Она позволяет:
- отображать карту без интернета
- использовать уже найденные адреса
- следовать маршруту
- работать с ранее полученными результатами поиска
Офлайн-система SDK состоит из трёх основных компонентов.
1. Кэширование API-ответов
SDK автоматически сохраняет результаты:
- геокодирования
- reverse геокодирования
- построения маршрутов
- Smart Search
Это позволяет использовать их повторно, даже если сеть недоступна.
2. Офлайн-карты
SDK поддерживает загрузку карт целыми регионами.
После загрузки:
- карта продолжает отображаться без интернета
- тайлы автоматически берутся из локального хранилища
- пользователю не требуется никаких дополнительных действий
3. Мониторинг сети
SDK автоматически отслеживает состояние сети и переключает поведение API:
- при наличии интернета используется сервер
- при отсутствии — используется кэш и офлайн-данные
Это происходит полностью автоматически.
Архитектура
Офлайн-подсистема SDK разделена на несколько независимых компонентов.
Каждый компонент отвечает за отдельную часть системы:
- ConnectivityService — определяет состояние сети
- CacheRepository — хранит API-ответы
- OfflineTileManager — управляет офлайн-картами
Компоненты офлайн-системы
1. Кэширование API-ответов
SDK автоматически кэширует результаты API-запросов.
| Операция | TTL | Максимум записей |
| Геокодирование | 24 часа | 100 |
| Reverse геокодинг | 6 часов | 200 |
| Маршруты | 1 час | 50 |
| Smart Search | 12 часов | 100 |
Такая стратегия позволяет:
- уменьшить нагрузку на API
- ускорить повторные запросы
- обеспечить работу офлайн
Конфигурация
Офлайн-режим настраивается при инициализации SDK.
Алгоритм работы
Онлайн-режим
Офлайн-режим
Пример
Результат автоматически сохранится в кэш.
2. Управление офлайн-картами
Офлайн-карты позволяют отображать карту без подключения к интернету.
SDK использует нативный механизм MapLibre (downloadOfflineRegion), который:
- скачивает тайлы напрямую с tile-сервера
- сохраняет их в
mbgl-offline.db - автоматически использует их при отсутствии сети
Архитектура загрузки тайлов
Поток скачивания
API Reference
OfflineTileManager
Основной класс управления офлайн-картами.
downloadRegionNative
Скачивает регион карты.
Пример использования
getAllRegions
Возвращает список скачанных регионов.
deleteRegion
Удаляет регион и связанные данные.
resetNativeDatabase
Используется при повреждении базы MapLibre.
OfflineRegion
OfflineRegionStatus
3. Мониторинг сети
SDK автоматически отслеживает состояние сети.
Поддерживаемые типы подключения:
- WiFi
- Mobile data
- Ethernet
- VPN
- Bluetooth
Хранение данных
SDK использует две базы данных.
Таблицы кэша
| Таблица | Назначение |
| GeocodeCacheTable | геокодирование |
| ReverseCacheTable | reverse |
| RouteCacheTable | маршруты |
| SmartSearchCacheTable | поиск |
| OfflineRegionTable | регионы |
Примеры интеграции
Инициализация SDK
Минимальный экран офлайн карт
Офлайн-навигация
Чтобы навигация работала офлайн, необходимо заранее:
- скачать тайлы региона
- построить маршрут
- закэшировать точки поиска
Ограничения офлайн режима
| Функция | Онлайн | Офлайн |
| Карта | ✓ | ✓ |
| Навигация | ✓ | ✓ |
| Voice guidance | ✓ | ✓ |
| Перестроение маршрута | ✓ | ✗ |
| Поиск новых адресов | ✓ | ✗ |
MapLibreNativeHelper
SDK включает встроенный helper для управления базой MapLibre.
Он используется для обхода известной ошибки:
Проверка базы
Удаление повреждённой базы
После удаления необходимо перезапустить приложение.
Рекомендации
Оптимизация загрузки карт
- используйте уровни зума 12-16
- скачивайте только необходимые регионы
- удаляйте устаревшие карты
TTL кэша
| Тип данных | Рекомендуемый TTL |
| Маршруты | 1–2 часа |
| Геокодинг | 24–48 часов |
| Поиск | 6–12 часов |
Заключение
Офлайн-система Qorvia Maps SDK позволяет приложениям работать даже при отсутствии сети.
Она включает:
- автоматическое кэширование API
- загрузку офлайн-карт
- мониторинг сети
- поддержку офлайн-навигации
- готовые UI-компоненты
Для стабильной работы рекомендуется заранее загружать карты и маршруты, пока устройство находится онлайн.