4 resolution scale openlayers-3
我试图使用传递到StyleFunction的分辨率来计算我的图像图标的大小.使用测试,在缩放线为100米的缩放处,报告给样式函数的分辨率为2.3886.
我已经截取了刻度线的截图并测量了它的长度(以像素为单位).100米刻度线是68像素,或每像素1.4705米.
1.4705!== 2.3886,那么什么是分辨率单位?API文档没有解释它,并说它只是一个数字,但是如果不了解单位,就很难解决.
这是为了准确地将图标缩放到实际世界长度BTW.
使用这个jsfiddle.net/dz9gL0g0/我发现200米的scaleline报告2.38,但是100m的报告更少(1.19).我从先前的缩放级别获得的分辨率是多少?如果我使用传入的分辨率或直接调用getResolution函数,100m scaleline对我来说总是返回2.83,而不是1.19我觉得它应该是,虽然1.19*84大部分是正确的(比例线在示例中比我的app更大,这给出了我是一个68像素的刻度线,100米).
移动窗口会改变分辨率 - 调整jsfiddle的大小并更改分辨率单位.我的100米刻度线仍然适合我用来测试的地理特征,但现在报告2.38.
小智 6
在 github ( https://github.com/openlayers/ol3/issues/3770 ) 上发布错误请求后,有人建议使用ol.proj.Projection.getPointResolution()来收集投影的正确分辨率(我假设在运行时被传递到样式函数中 - 假设,嗯?)。
var view = map.getView();
var coords = view.getCenter();
var resolution = view.getResolution();
var projection = view.getProjection();
var resolutionAtCoords = projection.getPointResolution(resolution, coords);
Run Code Online (Sandbox Code Playgroud)
这导致返回更接近 1.50XXXX 的分辨率,这取决于纬度。我的平铺地图源是否按投影适当缩放还有待观察,但这意味着我的每米像素现在在误差范围内,正确。
| 归档时间: |
|
| 查看次数: |
10479 次 |
| 最近记录: |