По вашему опыту, сколько точечных объектов можно добавить в векторный слой OpenLayers (новый OpenLayers.Layer.Vector ("Point Layer")), прежде чем он станет необычайно медленным?
Мой вариант использования для отображения точек из таблицы базы данных. Пользователь может решить, какой период времени визуализировать. Следовательно, результат может быть от очень небольшого до потенциально 100 000 баллов. Я хотел бы ввести разумное ограничение и предупредить пользователя, если его запрос вернет больше возможностей.
openlayers
web-mapping
Подземье
источник
источник
Ответы:
У меня нет однозначного ответа для вас, но я собрал страницу, на которой вы можете поиграть с разным количеством точек на карте OL: http://derekswingley.com/lab/olpts/
источник
Если отображение идет медленно из-за слишком большого номера функции, это означает, что отображаемые данные не подходят для уровня масштабирования. Обычно, когда плотность функций становится слишком высокой, дисплей больше не может быть читаем (см. Этот пример ). Даже если бы не было предела обработки, и все устройства отображения могли отображать 1000000000000 функций за 0,001 с на небольшом экране, визуализация оставалась бы невозможной.
Закон радиуса Тёпфера гласит, что плотность объектов должна оставаться под постоянным порогом независимо от уровня масштабирования. Чтобы решить эту проблему и адаптировать данные к масштабу визуализации, нужно преобразовать их, используя операции обобщения, подобные этой или этой другой .
источник
Я не думаю, что невозможно дать твердый ответ на этот вопрос. Точка рендеринга / полигоны полностью зависят от браузера и аппаратного обеспечения (процессор и память), а не от OpenLayers. У меня были проблемы с Openlayers и IE6 для одного из рендеринга Lake (Polygon). но он прекрасно загружается в Firefox. И лучшим вариантом было бы контролировать использование памяти и процессора с помощью Chrome или лучше использовать некоторые инструменты.
источник
Как и у других, у меня нет ответа на этот вопрос, но применение стратегии BBox может помочь вам сохранить только необходимые данные, поскольку они отображают только функции, расположенные в пределах данного ограничивающего прямоугольника.
источник
В OpenLayers 6 есть средство рендеринга точек WebGL, которое должно позволять вам отображать сотни тысяч объектов с фильтрацией по времени. Возможно, вы захотите ознакомиться с последней версией официального семинара по адресу https://openlayers.org/workshop/en/webgl/ .
С OpenLayers 2, который я действительно не рекомендую использовать больше, максимальная допустимая частота кадров будет составлять всего несколько сотен функций.
источник
Я наткнулся на аналогичный вариант использования, не уверенный, будет ли он соответствовать вышеупомянутым потребностям, но
Clustering
в OL 5 я принял это решение .Кластеризация, как предлагают слова, берет группу точек и объединяет их вместе в одну точку, например, у вас есть 100 точек в конкретном городе, все точки будут видны как одна точка, скажем, с увеличения,
4
но как отдельные точки с увеличения Скажем10
так, что вы можете сделать, когда при масштабировании4
вы можете объединить эти точки как единое целое, что помогает уменьшить количество точек, которые будут отображаться в определенной области.Другими словами, допустим, у вас есть 10000 точек, которые должны быть отрисованы на карте, и они довольно близки друг к другу, поэтому вы можете создавать из них кластеры и уменьшать рендеринг, а когда пользователь увеличивает масштаб, вы продолжаете разбивать кластеры. Это обеспечит меньший рендеринг и лучшую производительность.
Удовлетворительное представление. Ссылка на примеры кластеризации на Openlayers
источник