Если у вас будут тысячи свойств, вы можете рассмотреть возможность кластеризации ваших свойств в базе данных. То есть, определяя, на каком уровне масштабирования должно отображаться каждое свойство, вы можете кластеризовать точки, чтобы уменьшить отображаемую величину за раз.
Один из подходов может состоять в том, чтобы использовать другую таблицу, возможно, назвав ее properties_clusters
, со следующими полями: lat
, lng
, number_of_points
, zoom_level
. Убедитесь, что поле zoom_level
также содержит пригодный для использования индекс.
Всякий раз, когда вы вставляете или перемещаете свойство, вам также следует обновить таблицу properties_clusters
. Возможно, вы захотите немного изучить возможные алгоритмы кластеризации, но если точность не так важна, вы, вероятно, могли бы найти простое решение, например, тесселяция мира по количеству плиток для каждого уровня масштабирования, а затем просто кластеризовать соответственно. .
Затем, когда изменяется видимая область или уровень масштабирования карты, вы можете запросить данные из таблицы properties_clusters
, которая будет возвращать меньшее количество точек при уменьшении уровня масштабирования:
SELECT * FROM (`properties_clusters`)
WHERE `lat` > '-11.824448' AND `lat` < '84.124002' AND
`lng` > '-152.243398' AND `lng` < '-39.743398' AND
`zoom_level` = 5
Вы можете определить порог уровня масштабирования, из которого вы будете отображать результаты непосредственно из таблицы properties
. Этот порог обычно устанавливается на уровне масштабирования, при котором можно взаимодействовать с маркерами на карте (нажимая на них и т. Д.).