Openlayers 地图比例线相同的缩放率在公制中重复两次,即使缩放不同

Openlayers map scale line same zoom rate repeated twice in metric even-though the zoom differs

Openlayers 公制单位的地图比例线在缩放时具有重复两次的特定缩放率,尽管地图的实际缩放分辨率不同。

https://openlayers.org/en/latest/examples/scale-line.html 正如您在 link 中看到的,对于两个不同的缩放级别,缩放率 5km 和 5m 重复两次

我如何在视图中声明我的缩放率。

var viewLayer = new ol.View({
            center: [0, 0],
            zoom: 10,
            minZoom: 15,
            maxZoom: 24,
            resolution: 0.2,
            minResolution: 0.0125,
            maxResolution: 6.4
        });

刻度线控件声明为

var scaleLineControl = new ol.control.ScaleLine({
            minWidth: 100,
            units: 'metric'
        });

以上声明范围从 1000m 到 1m - 5m 以公制单位重复两次

您可以为 view 提供分辨率数组。请注意,如文档中所述:

If set the maxResolution, minResolution, minZoom, maxZoom, and zoomFactor options are ignored

但这并不是很干净,因为您需要提供较大步长的分辨率以避免缩放时比例线值相同。

实际上,出于可读性原因,这是为了像这样工作。值相同但刻度线宽度不同,所以这不是真正的问题,对吗?

传递给视图的分辨率和比例线的 minWidth 之间的混合也应该可以完成这项工作,但同样,这将只是自制的 hacks,这不是 OpenLayers-5 中的任何参数来实现你想要的想做!

为避免重复,您必须使用分辨率数组来匹配刻度线间隔

刻度线间隔是这样固定的

5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1

如果您不使用分辨率数组,OpenLayers 会在最小值和最大值之间以均匀的间隔修复 rsolutions,例如

4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1

所以(在那种情况下)你会有两个分辨率,它们在刻度线上介于 2000 和 5000 之间