繁体   English   中英

即使缩放比例不同,Openlayer也会以相同的缩放率在比例尺上重复缩放比例线两次

[英]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如您所见,在链接中,针对两个不同的缩放级别,对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以公制单位重复两次

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

刻度线间隔是固定的

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

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

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

因此(在这种情况下)您将在刻度线上有两个介于2000到5000之间的分辨率

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

如果设置了maxResolution,minResolution,minZoom,maxZoom和zoomFactor选项,则将被忽略

但这并不是真的很干净,因为您将需要大步地给出分辨率,以避免缩放比例值在缩放时相同。

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

同样,传递给视图的分辨率和刻度线的minWidth之间的混合应该可以完成这项工作,但是同样,这只是自制的技巧,这不是OpenLayers-5中的参数来实现您想要的功能!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM