1

Благодаря этому answer Мне удалось найти временное решение моей проблемы.Серверные кластеры координат на основе уровня масштабирования

Однако, имея список из 6000 пунктов, который растет каждый день, он становится все медленнее и медленнее.

Я не могу использовать стороннюю услугу *, поэтому мне нужно придумать свое решение.

Вот мои требования:

  1. Кластеризации координат необходимо работать с любым уровнем масштабирования на карты.

  2. Все кластеры должны быть кэшируются

  3. В идеале не будет необходимости кластера (расчет расстояния) на всех точек, если будет добавлен новый пункт.

До сих пор я реализовал quadtree, который возвращает четыре границы моей карты и возвращает любые координаты в пределах видимого раздела карты.

Что мне нужно, и я знаю, что это непросто - это иметь кластеры точек, возвращаемых из БД (postgres).

ответ

1

В настоящее время я выполняю динамическую кластеризацию на стороне сервера около 2000 маркеров, но она работает довольно быстро до 20 000. Вы можете увидеть обсуждение моего алгоритма здесь:

Map Clustering Algorithm

Всякого раз, когда пользователь перемещает карту я отправить запрос с уровнем масштабирования и границу зрения на сервер, какие кластеры видимых маркеров и отправляет его назад к клиенту.

Я не кэширую кластеры, потому что маркеры можно динамически фильтровать и искать, но если они были предварительно сгруппированы, это будет очень быстро!

2

Я не понимаю, почему вам нужно «сгруппировать» на лету. Подведите итоги на каждом уровне масштабирования с разрешением, которым вы довольны.

Имейте простую структуру X, Y, # ссылок. Когда кто-то добавляет ссылку, вы вставляете реальные местоположения (Масштабирование макс или что-то еще), а затем начинаете подниматься оттуда.

В конце концов у вас будет 10 (если у вас есть 10 уровней увеличения) наборы различных координат, по одному для каждого разного уровня масштабирования.

Расчет тривиален, и вам нужно сделать это только один раз.

+0

Что делать, если на уровне увеличения 1 вы можете иметь 500 маркеров и на маркерах уровня 2 5000? – Eeyore

Смежные вопросы