Я отчаянно искал право решение, которое может обрабатывать до 50 000 маркеров (и почему бы не больше, если сервер справится с этим) будучи легким на моем сервере, и я делал это в течение нескольких дней.
Концепция примерно такая:
Теория:
Правильный путь выглядит примерно так:
Данные, которые я мог бы использовать на стороне сервера и которые я мог бы также отправить в браузер через JSON:
Я работаю с приложениями google maps с 50 000 100 000 полигонов. Очень полезной оказалась возможность организации полигонов в ряд областей (логика листов, области или аналогичные). Использование массива уже отображенных областей, который отправляется на сервер через ajax вместе с координатами, которые вы связали, позволило мне выбрать только те области, которые еще не отображались, и, таким образом, сократить как распределение полосы пропускания, так и время рендеринга полигонов,
В остальном стратегия верна. для более тщательной оценки следует получить углубленную техническую информацию, практически неосуществимую в соц.
Что касается языка на стороне сервера, то все в порядке, лично я сейчас использую PHP и фреймворк Yii2 с драйвером PDO для MySQL. Важно то, что использование среды делает ее очень простой и эффективный доступ к базе данных.
В этих условиях использование хорошей организации кластера и отображение полигонов в регионах, когда уровень масштабирования позволяет это сделать, делает приложения Google Maps очень эффективными.
Обратите внимание, что появление маркеров происходит быстрее, чем у полигонов, так как меньше количество задействованных координат и их графические характеристики.
Для общего вопроса, как ваш трудно найти хороший ответ в Интернете. Для регионов зависит размер области, которой вы управляете, и средняя плотность маркеров. Для области, не находящейся около полюса, вы можете использовать часть координат .. или, если у вашей географической точки есть некоторый атрибут, связанный с областью, вы можете использовать их. Вы можете найти формулы онлайн, чтобы связать масштаб с приблизительным размером области. Зависит также от того, как осуществляется сбор маркеров. В моем случае во время сбора я использовал какой-то атрибут для этого.
Для проверки есть маркеры или группа маркеров уже на картах, я использую просто вектор и использую это (через ajax) для динамического обмена с сервером. Первый раз вектор пуст и постепенно вектор содержит элемент для «знать», что уже отображается.
Других решений пока нет …