的OpenLayers:获取地图的分辨率在给定的投影(4326)
-
18-09-2019 - |
题
我使用的OpenLayers显示OpenStreetMap的地图。 (虽然,我认为这应该是通用,足以对任何地图产品的工作...)
我展示了一些非常复杂的矢量叠加,以及数量和我是从通过GeoJSON的服务器覆盖返回特征的分辨率已经证明太多,多台计算机。
我想现在要做的却是只发送数据相称当前变焦的分辨率。这应该是比较容易使用getResolution
对象的calculateBounds
和Map
方法来做。 calculateBounds
返回然后可在地图投影和显示投影之间变换的界对象。
如何转变分辨率为我所希望的投影(4326在这种情况下)?有一个内置在做这个的办法还是我要跑针对已知公式分辨率?
解决方案
可以使用 Proj4js 以变换在客户端上的坐标系统。
其他提示
如何只限制了在你的GeoJSON的矢量层将以此为尺度?
HTTP://dev.openlayers .ORG /文档/文件/的OpenLayers /层js.html#OpenLayers.Layer.maxScale
接着的OpenLayers AJAX请求到服务器应仅触发超出了刻度。挑选对应,当你想显示向量层到OpenSteetMaps规模/缩放级别,并相应地设置maxScale。
在请求应被自动发送当前地图显示的边界到你的服务器来获得相关的功能。
我可能误解了,虽然你的困境。如果你想要的分辨率公式本文介绍他们:
http://msdn.microsoft.com/en-us/library /aa940990.aspx
<强>更新强>
您可以实现的OpenLayers集群战略。我想这应该缩短渲染时间,但我会假设相同的数据量会从数据库中返回。
这里检查出例如:
http://openlayers.org/dev/examples/strategy-cluster.html
要避免具有你前人的精力设置pointRadius不同尺寸的点:“$ {半径}”为恒定。
最后一个替代方案将是使用一个WMS服务,而不是以GeoJSON,服务器随后将只返回一个固定尺寸的图像。