Медленная работа OpenLayers в IE, с больши количеством объектов

Здравствуйте
Решил написать сюда, может кто подскажет

Я пользуюсь OpenLayers, использую WMS для отображения карт и векторный слой для отображения объектов
С помощью StyleMap к разным объектам (в зависимости от атрибутов) привязываются разные изображения (24x24px).

До 300 объектов отрисовываются нормально, но дальше жуткие тормоза при перетаскивании карты и смене масштаба.
Задача - отображать более 1000 объектов.

Я даже писал свой простой рендер под IE, что позволило отображать до 700 объектов, но у него есть свои недостатки.

Прошу совета, что делать, в каком направлении двигаться.

А как привязываете? Через extGraphics?

  1. Группировать на больших масштабах в один объект
  2. На мелких грузить только попадающие в область
  3. Сгенерировать тайлы

Через externalGraphic

Самый простой способ - рендерить всё на сервере, а на клиенте показывать только картинку. Тогда никакие тыщи не страшны и будет работать даже на мобильниках.
Таким путём пошли на http://transport.orgp.spb.ru/
Правда при этом страдает интерактивность. Если она нужна - придётся повозиться (обрабатывать клики по картинке и формировать запросы на доп. данные на сервер).

111
222
Такая идея была, но хочется, что бы было все объекты, так удобно наблюдать

333
Так, если в объекты будут в тайлах:

  • нельзя будет по ним кликать
  • если список объектов будет часто обновляться, именно тайлы придется перезагружать(обновлять)?
  • Тайлы нелязя будет кешировать

Слышал OpenStreetMap перешёл к использованию библиотеки Leaflet
Интересно, если перейти на Leaflet, это поможет в моём случае?

В лоб скорее нет, там маркеры по умолчанию на хтмле создаются если не путаю ничего, с векторными маркерами - можно попробовать.

  • Большой пользы от каши объектов в одном месте не много, всё равно ничего не видно.
  • Какой смысл от объектов за экраном ? А если это в локальной сети, то вообще лагов с их обновлением будет не видно.

На HTML? Мне кажется, проблема с производительностью именно из-за использования векторных маркеров (VML), хотя более гибко. Я писал свой рендер который делал все через html и стили, это дало прирост раза в два.

Это не локальная сеть, а объекты разбросаны по большой територии. Удобно видеть обзорный вид всего, можно к примеру на большую панель вывести.
Но сейчас склоняюсь всё больше к этому варианту.

Я просто пару презенташек видел на тему хтмль маркеры зло и медленно (правда на примере гуглокарт).
В общем эксперимент все рассудит, в лифлете поменьше заморочек чем влеерсах, так что программить будет удобнее.

Обзорный вид кстати с группировкой вполне совместим.

Группировка может не подойти разве что когда у объектов должен меняться маркер в реальном времени. А так даже есть это слежение за транспортом, то маркер просто отделяется от группы и едет дальше. Вот пример группировки, правда на яндексовом движке.

А в каком именно месте возникают тормоза?
С точки зрения отображения - писал отображение порядка 2000-3000 объектов размерами 48х48 при рендеринге на 166 МГц процессоре без использования ускорителя. 30 fps минимум. Так что при грамотной реализации это тормозить не может.
Если объектов на порядок больше, думаю, с этим современные 2-3 ГГцовые процессоры тоже должны справиться.
А если больше на 2-3 порядка, то с той же задачей не менее быстро справится GPU.
При перетаскивании и смене масштаба тормоза могут быть связаны с передачей данных по сети, но мне кажется, при грамотной организации обмена передача нескольких Кбайт тоже должна занимать существенно меньше секунды.
У себя в рендере, кстати, я делал опережающее чтение, т.е. в моменты простоя (когда пользователь не давит кнопки) подгружаются тайлы соседние с краями экрана. Если обмен - узкое место, то такой способ позволяет существенно ускорить отклик рендера.

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

Это не так - кликабельность никак не связана с отображением. Абсолютно.

andriano, ну сказали “а” - говорите и “б”, а то очень пафосно звучит и неконструктивно в то же время. http://gis-lab.info/qa/mapserver-getfeatureinfo.html

BushmanK, могу только повториться: начать нужно с того, что выявить, на каком именно этапе возникают тормоза.
Насколько я понял, ТС предпринимал попытки в двух направлениях: с OpenLayers и с собственным рендером. Ни с тем ни с другим я не работал, поэтому могу могу помочь лишь общими рекомендациями по стратегии и тактике оптимизации кода (которые справедливы для любой платформы), но не конкретной справкой по тому или иному механизму.

может немного не в тему, но VML закончился на IE8. В более свежих ослах SVG не пробовал?

Мое возражение касалось того, что вы написали назидательное: “Это не так - кликабельность никак не связана с отображением. Абсолютно.” - но не сказали ничего хотя бы о направлении, в котором стоит смотреть, как “развязать” кликабельность и отображение. Слов “WMS GetFeatureInfo” вполне хватило бы. Я вот тоже в этом ни разу не специалист, но мне было не лень.