Теперь приложение имеет универсальный слайдер для навигации между всеми объектами на карте! Пользователи могут легко перемещаться между системными и пользовательскими плейсмарками, а также получать детальную информацию о каждом объекте.
- Все объекты в одном месте: Системные и пользовательские плейсмарки
- Интуитивная навигация: Стрелки влево/вправо и слайдер
- Автоматический выбор: Новые метки автоматически выбираются
- Перемещение к объекту: Автоматическое перемещение карты к выбранному объекту
- Плавная анимация: Красивые переходы между объектами
- Циклическая навигация: Переход от последнего к первому объекту
- Тип объекта: Индикатор системного (S) или пользовательского (C) объекта
- Координаты: Точные координаты каждого объекта
- Описание: Дополнительная информация для системных объектов
- Стрелки навигации: ← → для перехода между объектами
- Слайдер: Перетаскивание для быстрого выбора
- Автоматическое перемещение: Карта плавно летит к выбранному объекту
- Просмотр информации: Детали объекта отображаются в карточке
- Удаление меток: Кнопка "Удалить" для пользовательских объектов
- Очистка: Кнопка "Очистить все" для удаления всех пользовательских меток
enum class MapObjectType {
SYSTEM, // Системные плейсмарки
CUSTOM // Пользовательские плейсмарки
}
data class MapObject(
val id: String,
val title: String,
val position: Point,
val type: MapObjectType,
val description: String?
)// Перемещение к объекту
fun moveToSelectedObject(placemarks: List<PlacemarkViewState>) {
val allObjects = getAllObjectsForSlider(placemarks)
if (selectedObjectIndex.value < allObjects.size) {
val selectedObject = allObjects[selectedObjectIndex.value]
mapState.moveToObject(selectedObject.position, selectedObject.title)
}
}fun moveToObject(point: Point, title: String) {
// Плавное перемещение к объекту с зумом 16.0
// Длительность анимации: 2 секунды
}- Общее количество объектов
- Кнопки предыдущий/следующий
- Индикатор текущего объекта (1/5)
- Визуальный выбор объекта
- Плавное перетаскивание
- Автоматическое перемещение карты
- Название и тип объекта
- Координаты
- Описание (для системных объектов)
- Кнопка удаления (для пользовательских)
- Очистка всех пользовательских меток
- Цветовая индикация типов объектов
- 🔵 Синий: Системные объекты
- 🟢 Зеленый: Пользовательские объекты
- 🔴 Красный: Кнопка удаления
- 🟠 Оранжевый: Кнопка очистки всех
- Метка автоматически добавляется в список
- Автоматически выбирается в слайдере
- Карта перемещается к новой метке
- Метка удаляется из списка
- Индекс автоматически корректируется
- UI обновляется
- ✅ Android: Полная поддержка всех функций
⚠️ iOS: Базовая поддержка через общие методы- ✅ Web: Поддержка через общие методы
- Проверьте, что объекты существуют в списке
- Убедитесь, что индекс не выходит за границы
- Проверьте callback
moveToSelectedObject
- Проверьте состояние
MapScreenMutableState - Убедитесь, что
getAllObjectsForSliderвозвращает корректные данные - Проверьте UI компоненты на корректность
// Переход к следующему объекту
val nextIndex = (currentIndex + 1) % totalObjects
mapScreenMutableState.setSelectedObjectIndex(nextIndex)
mapScreenMutableState.moveToSelectedObject(placemarks)val allObjects = mapScreenMutableState.getAllObjectsForSlider(placemarks)
val selectedObject = allObjects[selectedIndex]// При добавлении новой метки
mapScreenMutableState.addCustomPlacemark(newPlacemark, placemarks)
// Автоматически выбирается и перемещается к нему- Фильтрация: Поиск и фильтрация объектов
- Группировка: Категории объектов
- Закладки: Сохранение избранных объектов
- Экспорт: Сохранение списка объектов
- Статистика: Анализ объектов на карте
- Кластеризация: Группировка близких объектов