比例尺
在地图中是一个非常重要的概念,有着辅助读图的作用。本文在ol框架下,实现webgis中的比例尺功能。
在课本中,对其的定义是:地图上所表示的空间尺度称作比例尺。在webgis中,比例尺代表的是一个像素代表实际中多少米,因此在不同的级别比例尺不同。在webgis中,跟比例尺对应的还有一个概念叫做分辨率。在标注切片下,分辨率和比例尺的对应关系如下:
在ol中比例尺的实现代码逻辑如下:
const minWidth = 60
const dom = document.getElementById('scaleLine')
let currentZoom = -1
// 地图拖动和缩放事件
map.on('moveend', function (e) {
if(currentZoom === map.getView().getZoom()) return
const res = map.getView().getResolution()
let width = minWidth;
let minScale = res * width
let unit = 'm', scale = minScale
if(minScale / 1000 > 1) {
unit = 'km'
scale = Math.ceil(minScale / 1000)
}
const breaks = [1000, 500, 200, 100, 50, 20, 10]
for (let i = 0; i < breaks.length; i++) {
const b = breaks[i]
if(scale / b > 1) {
scale = Math.ceil(scale / b) * b
break
}
}
width = unit === 'm' ? scale / res : scale * 1000 / res
dom.style.width = (width + 4) + 'px'
dom.innerText = scale + unit
currentZoom = map.getView().getZoom()
})
实现代码比较简答,下面简单做一个分析:
minWidth
是展示比例尺最小的宽度,也是后面计算比例尺的一个基准;扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有