前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webgis中的比例尺实现

webgis中的比例尺实现

作者头像
lzugis
发布2021-12-06 10:40:45
5720
发布2021-12-06 10:40:45
举报

概述

比例尺在地图中是一个非常重要的概念,有着辅助读图的作用。本文在ol框架下,实现webgis中的比例尺功能。

实现效果

1.PNG
1.PNG

概念

在课本中,对其的定义是:地图上所表示的空间尺度称作比例尺。在webgis中,比例尺代表的是一个像素代表实际中多少米,因此在不同的级别比例尺不同。在webgis中,跟比例尺对应的还有一个概念叫做分辨率。在标注切片下,分辨率比例尺的对应关系如下:

分辨率和比例尺
分辨率和比例尺

实现

在ol中比例尺的实现代码逻辑如下:

代码语言:javascript
复制
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()
})

实现代码比较简答,下面简单做一个分析:

  1. minWidth是展示比例尺最小的宽度,也是后面计算比例尺的一个基准;
  2. 比例尺的展示是通过一个浮动的div来展示的;
  3. 通过当前分辨率计算60个像素对应的图上的距离,并做取整处理;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 实现效果
  • 概念
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档