OpenLayers: Получите разрешение карты в данной проекции (4326)

StackOverflow https://stackoverflow.com/questions/2406834

Вопрос

Я использую OpenLayers для отображения карт OpenStreetMap. (Однако я предполагаю, что это должно быть достаточно общим, чтобы работать для любого продукта карты ...)

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

То, что я хотел бы сделать сейчас, это только отправить данные, соответствующие разрешению текущего масштабирования. Это должно быть относительно легко сделать с помощью getResolution а также calculateBounds Методы на Map объект. calculateBounds Возвращает объект Bounds, который затем может быть преобразован между проекцией карты и проекцией отображения.

Как преобразовать разрешение в желаемую проекцию (4326 в этом случае)? Есть ли встроенный способ сделать это или мне придется управлять резолюцией против известной формулы?

Это было полезно?

Решение

Вы можете использовать Proj4js преобразовать системы координат на клиенте.

Другие советы

Как насчет того, чтобы просто ограничить масштаб, в которой будет рисовать ваш векторный слой Geojson?

http://dev.openlayers.org/docs/files/openlayers/layer-js.html#openlayers.layer.maxscale

Затем OpenLayers Ajax запрашивает сервер на сервере, должен выходить за рамки этого масштаба. Выберите уровень шкалы / масштабирования OpenSteetMaps, который соответствует, когда вы хотите показать векторный слой, и установите MAXCALE соответственно.

Запросы должны автоматически отправлять границы текущего отображения карты на ваш сервер, чтобы получить соответствующие функции.

Возможно, я неправильно понял вашу дилемму. Если вам нужны формулы разрешения, в этой статье описываются их:

http://msdn.microsoft.com/en-us/library/aa940990.aspx

Обновлять

Вы можете реализовать стратегию кластеризации в OpenLayers. Я думаю, что это должно сократить время рендеринга, хотя я бы предположил, что такой же объем данных будет возвращен из базы данных.

http://dev.openlayers.org/releases/openlayers-2.7/doc/apidocs/files/openlayers/strategy/cluster-js.html

Проверьте пример здесь:

http://openlayers.org/dev/examples/strategy-cluster.html

Чтобы избежать того, чтобы иметь разные точки, вы можете установить Pointradius: «$ {radius}» на постоянную.

Наконец, альтернативой будет использование службы WMS, а не Geojson, сервер будет только возвращать изображения фиксированного размера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top