![](/img/trans.png)
[英]Using an PNG or JPEG for Map with OpenLayers (Scale/Zoom Problem)
[英]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.