Статьи пока нет. Недавно прошел апишник, на котором был доклад про кластеризатор. Пока в открытом доступе презентации с него, правда они без рассказа особой ценности не представляют. Скоро обещают выложить видео - наверняка будет пост в клубе.
Про магию расчета для конкретного зума Вы рссказывали:
1. Накладываем сетку кластеризации 2. Second pass - смотрим на пересечения на границах сетки
Меня интересует вот что:
1. Расчитвается ли все дерево при инициализации кластерера? Поясню. Вы говорили, что кластеры статичны. То есть расчитываются одиз раз с верхнего левого угла 2. Если да, Как Вы храните такое дерево?
При добавлении кластеризатора на карту (и потом при изменении зума) рассчитывается, в какую ячейку кластеризации попадает каждый геообъект, геообъекты сортируются по номеру тайла по оси x.
Кластеризатор анализирует видимую область карты и определяет, какие ячейки кластеризации нужно сейчас обработать и показать. Для хранения информации по ячейкам формируется хэш, ключи - номера ячеек по x и y.
Для этих ячеек бинарным поиском находятся геообъекты, которые в них попадают (посколько все уже посчитано и отсортировано). Дальше формируются кластеры и добавляются на карту.
При изменении зума кластеризация полностью перестраивается, так как меняется сетка.
При сдвиге карты смотрим, не изменилась ли отображаемая область. Если какие-то тайлы кластеризации скрылись, мы проходим по соответствующим ячейкам и удаляем их (плюс удаляем объекты с карты). Если добавились тайлы - то проходим по новым ячейкам, и в них генерируем кластеры.
у меня испольуется канвасные метки (кстати, работает overlay.staticGraphics.Placemark, а не overlay.staticGraphics.CanvasPlacemark как написано в доках) для подложки для хотспотов, а при срабатывании хотспота - ставится обычная метка типа Placemark. так вот плучается ерунда - для канваса теней нет, а для Placemark - спрайт не работает)))