Поддержка OpenLayers для уровня детализации в KML

Поддерживает ли OpenLayers переключение видимости регионов на основе тега Level of Details (<Lod/>)? Насколько я исследовал и попробовал, ни один из примеров KML из упомянутой ссылки не работает на OpenLayers/Google Maps. Вы также можете быть заинтересованы в аналогичном вопросе о LoD в gmaps, который предполагает, что никто не заботится об уровне поддержки деталей, поэтому вопросы:

  • Кто-нибудь нашел какое-либо живое доказательство того, что уровень детализации когда-либо работал?
  • Если нет, кто-нибудь знает, как использовать регионы KML, если они все равно будут загружены в браузер одновременно?
  • Если все еще нет - знаете ли вы какой-нибудь способ решить проблему загрузки большого количества функций (>100000) разумным и эффективным способом с использованием KML? Или, может быть, "официально поддерживаемое" решение должно быть отброшено для некоторой пользовательской реализации, такой как обработка событий увеличения / уменьшения и ручное переключение видимости функций?

1 ответ

Решение

Open Layers не поддерживает уровень детализации в KML. Как вы могли заметить, производительность выше некоторого количества функций - это не ошибка OpenLayers, а проблемы с рендерингом браузера и проблемами обхода DOM. Появление webGL, несомненно, значительно улучшит это.

В OpenLayers есть что-то, называемое кластерной стратегией, чтобы обойти эту проблему, при которой точки кластеризуются вместе при уменьшении масштаба, основываясь на различных заданных вами параметрах: см. http://openlayers.org/dev/examples/strategy-cluster.html создании рендеринг намного быстрее.

Если у вас есть больший контроль над тем, откуда поступают данные, вы можете создать разные слои на стороне сервера и загрузить их как отдельные векторные слои в OpenLayers, но с разными уровнями maxResolution, чтобы контролировать, отрисовываются они или нет.

Как предлагает sfletche, вы также можете предварительно визуализировать kml в тайлы с разным уровнем масштабирования или создать wms, чтобы работа выполнялась на стороне сервера, и вы просто получили растр. Этот подход не сильно вам поможет, если вам действительно нужно запросить эти функции на стороне клиента.

Не зная немного больше о настройке и требованиях к использованию, трудно дать твердые рекомендации.

Другие вопросы по тегам