В общем стоит задача отрисовать 100500 маркеров на карте Google Map, вроде бы все просто, но при отрисовки такого количества маркеров, браузер скорее всего загнется или минимум начнет жутко тормозить, даже если использовать клиентскую кластеризацию, объем данных большой и передача между клиентом и сервером будет создавать большие нагрузки, которые нужно избежать.
И в голову приходит лишь одно решение использовать серверную кластеризацию.
И так в базе MySQL хранятся точки с latLng координатами.
От карты мы можем получать координаты видимого участка (x1,x2,y1,y2), зум и еще некоторые данным предоставляемые через api
Решение номер #1) На сервере получать маркеры для видимой области, группировать их по расстоянию друг от друга, когда данная задача была мною и моим коллегой решена. Вроде бы все хорошо, работает как нужно. Но решение не идеально. Так как на "нулевом" зуме все равно будет "некрасиво" и маркеры будут накладываться друг на друга в местах особого скопления.
Решение номер #2) Как мы все знаем карта состоит из плиток (тайлы, tiles). Хочется как то использоваться их на сервере, для клиента данная задача решена, для сервера решения найти я не смог (возможно плохо искал). Так же я нашел некое решение основанное на quadtree, но пока не могу понять как его применить к моей задачи. Есть следующие вопросы:
1) Как нам определить quadtree ноду зная гео-координаты точки (google.maps.latLng)? По какому алгоритму?
2) Как нам узнать какие сейчас quadtree ноды в поле видимости карты, нам доступны только гео-координаты (на сколько я понимаю)
Возможно я зашел в дебри, которые можно обойти более легким решением, так что другие алгоритмы приветствуются!

PS спасибо за внимание, надеюсь на помощь сообщества!