Я создаю приложение, в котором я хотел бы иметь MapView с аннотациями и CollectionView с наложением на него ячеек, похожих на маленькие карточки.
Данные, которыми я заполняю карты MapView и CollectionView,динамический и всегда обновляемый, так как он связан с серверами Firebase RealTime .
Например -> Если в MapView в вашем районе 10 заданий, CollectionView покажет 10 карт / ячеек, которыеВы можете провести через.Если в следующую секунду будет создано другое задание, я не хочу, чтобы весь MapView & CollectionView перезагружал свои данные.Вместо этого я хочу создать еще одну аннотацию в MapView (или добавить +1 к аннотации кластера) и добавить еще одну карту / ячейку в CollectionView в конце или, где это применимо.Этот динамический сценарий также применяется для удаления 1 из 10 заданий в MapView / CollectionView.
Подвох здесь - - Эти 10 заданий / аннотаций в MapView могут быть сгруппированы.Когда они кластеризованы, если бы я нажал на одну из них, я хочу увеличить масштаб и показать разделенные задания / аннотации и отфильтровать карты / ячейки, чтобы показать те, которые появляются в MapView.
У меня естьперепробовал все сторонние библиотеки, и они работают, но в это должны быть встроены другие функции, поэтому эти библиотеки недостаточно модульны, чтобы добавлять и ограничивать меня, а не помогать.Поэтому я использую все нативные делегаты, которые мне доступны из SWIFT.
Мои данные - Данные поступают в массив из 2 моделей представления, например:
struct ViewModel {
let CardsViewModel : [],
let MapViewModel: []
}
Эти ViewModels содержат ID , которые связаны с конкретной работой / аннотацией или картой / ячейкой.
Моя проблема: Пытаясь сделать все эти вещи динамичными, действительно трудно определить, какая аннотация в каком месте будет удалена или добавлена, и вносить изменения в collectionView одновременно, а также когда в некоторый момент фильтруется collectionViews DataModel, когдаПользователь мог щелкнуть по кластеру.
Каков наилучший подход к реализации всей этой функции?Могу ли я получить серьезный синтаксис кода и примеры.Может быть, даже пример проекта?
Спасибо!
PS Я использую архитектуру VIPER.