generated from Grigo/AndroidTemplate
4.1 KiB
4.1 KiB
🔧 Архитектурные исправления - ЗАВЕРШЕНО!
✅ Исправленные проблемы:
1. MarkerManager перенесен в MapController ✅
Проблема:
MarkerManager хранился в реализации карты (YandexMapImpl), что нарушало принцип централизованного управления.
Решение:
- ✅ Интерфейс MarkerManager уже существовал
- ✅ Добавлен в MapController:
- Переменная
private MarkerManager markerManager; - Метод
getMarkerManager()для доступа - Метод
initializeMarkerManager()для инициализации - Метод
cleanupMarkerManager()для очистки
- Переменная
- ✅ Интеграция с инициализацией карт:
- Вызов
initializeMarkerManager()вinitializeMap()иinitializeMapLibre() - Вызов
cleanupMarkerManager()вcleanup()
- Вызов
- ✅ SDK-специфичная логика:
- Yandex: создается
YandexMarkerManager - MapLibre:
null(использует встроенное управление маркерами)
- Yandex: создается
2. Исправлена логика GPSLocationListener ✅
Проблема:
GPSLocationListener дублировался в NMEAParser и NMEAController, логика работы была неправильной.
Решение:
- ✅ Убрано дублирование: GPSLocationListener теперь только в NMEAController
- ✅ Добавлена правильная логика режимов:
Режимы работы:
-
hybrid(гибридный):- GPS Android API для координат
- NMEA с Android идет в NMEA Parser
- Игнорируем "$" сообщения по UDP
-
android_only(только Android GPS):- Только встроенный GPS
- НЕ шлем в парсер NMEA с Android
- Игнорируем все NMEA сообщения
-
nmea_only(только NMEA):- Игнорируем locationManager
- Ищем RMC через Android NMEA
- Обрабатываем все NMEA сообщения
- ✅ Добавлен метод
configureMode()для настройки режима - ✅ Обновлен
setDataMode()для применения настроек - ✅ Добавлена фильтрация в
parseNMEAMessage():- В режиме
android_onlyигнорируются NMEA сообщения
- В режиме
- ✅ Сохранение текущего режима в переменной
currentDataMode
🎯 Результат:
✅ MarkerManager централизован:
- Управляется через MapController
- SDK-специфичная логика изолирована
- Легко расширяется для новых SDK
✅ GPS логика исправлена:
- Нет дублирования GPSLocationListener
- Правильная работа режимов
- Фильтрация сообщений по режиму
- Четкое разделение источников данных
📊 Статистика исправлений:
- Исправлено проблем: 2
- Обновлено файлов: 2
- Добавлено методов: 6
- Добавлено строк кода: ~100
🚀 Архитектура улучшена:
MapController
├── MarkerManager (централизован)
│ ├── YandexMarkerManager (для Yandex)
│ └── null (для MapLibre - встроенное управление)
└── MapInterface (стратегия карт)
NMEAController
├── GPSLocationListener (единственный экземпляр)
├── AndroidNMEAListener
└── NMEAParser (с правильной логикой режимов)
Архитектура стала более чистой и соответствует принципам SOLID! 🎉