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

webgis中的比例尺实现

作者头像
牛老师讲GIS
发布于 2021-12-06 02:40:45
发布于 2021-12-06 02:40:45
67800
代码可运行
举报
运行总次数:0
代码可运行

概述

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

实现效果

概念

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

实现

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分享一个切片网格的生成函数
概述 本文分享一个切片网格生成的方法,并在openlayer中加以测试展示。 效果 实现代码 function getMapTileGrid(extent, zoom, tileSize = 256) { let resolution = 156543.03392804097 let resolutions = [] for (let i = 0; i < 19; i++) { resolutions.push(resolution) resolution = res
牛老师讲GIS
2021/12/06
4931
分享一个切片网格的生成函数
地图放大镜的实现
闲来无事,就做一个花里胡哨的功能:地图放大镜,从中可以学习:1、根据坐标计算对应级别的切片;2、canvas绘图。
牛老师讲GIS
2021/12/06
1.5K0
地图放大镜的实现
leaflet在前端显示地图缩放比例尺和级别
https://leafletjs.com/examples/zoom-levels/example-setzoom.html
hotqin888
2023/02/26
1.8K0
leaflet在前端显示地图缩放比例尺和级别
openlayers4+中高德导航路径的实现
许久未更新了,今天特此更新一篇,以示我还在,我也会一直在。今天的更新比较简单,就是在openlayers4+中实现类似于高德导航路径的样式。
牛老师讲GIS
2021/12/06
9300
openlayers4+中高德导航路径的实现
ol4通过ImageCanvas实现大量点的展示以及交互的实现
在ol4里面可以通过Vector Layer的方式进行点的渲染,但是当点的个数比较多的时候,会存在明显的操作不流畅。本文讲述如何利用ImageCanvas接口,对大量的点进行展示,并添加相应的交互。
牛老师讲GIS
2019/08/29
8150
ol4通过ImageCanvas实现大量点的展示以及交互的实现
地图上覆盖物压盖的优化
在做webgis的时候,会经常性的碰到地图覆盖物压盖的情况。本文讲述一种基于聚类思路的解决办法,实现使用的是openlayers4+。
牛老师讲GIS
2020/02/20
1.3K0
ArcGIS for Android学习(一)
GIS的开发中,什么时候都少不了地图操作。ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map、MapControl类的作用是一样的。     地图常见的操作有缩放、旋转、平移、获取范围、比例尺、分辨率等信息,以及常用的手势操作,其中,经常使用到的功能和常见问题有以下几个: 1)将地图缩放到指定的比例尺/分
水击三千
2018/02/27
5.5K0
ArcGIS for Android学习(一)
跟牛老师一起学WEBGIS——WEBGIS实现(绘制切片)
前面已经有三篇文章分别讲述了点、线和面、图片的绘制,在本文讲讲如何实现切片的绘制。
牛老师讲GIS
2020/12/08
6110
航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
根据武汉大学《摄影测量学》中的定义:航摄比例尺是航摄影像上一线段l与相应地面线段L的水平距离之比:
charlee44
2020/07/21
4.3K0
航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
webGIS,基于百度地图的HelloWord实现
随着前端技术的不断发展,WebGIS普及度也越来越广,本篇将主要讲解基于百度地图JavaScript API GL v1.0
啦啦啦啦
2023/02/27
3890
webGIS,基于百度地图的HelloWord实现
OpenLayers入门(一)
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
街角小林
2022/06/15
5.1K0
OpenLayers入门(一)
ol中闪烁点动画的实现
实现如图的动画,可以用两种思路: 1.overlay+css3动画实现; 2.canvas动画实现。
牛老师讲GIS
2019/08/29
1.7K0
ol中闪烁点动画的实现
openlayers中网格聚类的实现
聚类是根据一定的规则将数据进行分类统计,常见的聚类方式有:1、基于行政区划;2、基于空间距离;3、基于业务字段。本文实现了基于固定大小的网格的聚类。
牛老师讲GIS
2023/06/10
7890
openlayers中网格聚类的实现
零基础上手WebGIS+智慧校园实例(1)【html by js】
等下再更新一下1. WebGIS矢量图形的绘制(超级详细!!),2. WebGIS计算距离, 以及智慧校园实例 with 3个例子!!!!,尽情期待!!!
用户11404404
2024/12/13
1640
零基础上手WebGIS+智慧校园实例(1)【html by js】
webgis中捕捉功能的实现
本文以openlayers为例,结合turf.js讲一下webgis中绘制和编辑时如何实现捕捉功能。
牛老师讲GIS
2021/12/06
7750
webgis中捕捉功能的实现
基于canvas和ol的点标注的避让实现
在做地图的时候,点的标注展示是一个非常常见的功能,但是十几种点在某些区域比较密集是非常常见的,但是业务表达中却需要将之展示出来。基于此需求,本文结合canvas和ol做一简单的实现。
牛老师讲GIS
2021/12/21
6010
基于canvas和ol的点标注的避让实现
openlayers5中用iconfont作为图标
前面有文章 openlayers4中用font设置图标样式 就iconfont在ol5中的使用做了一个尝试,后面有很多童鞋问我说实现不了,一直没有时间去做一个详细的测试,最近在做了诸多测试后,觉得这种方式比较靠谱,在此分享出来,希望对用到的童鞋有所帮助和启示。
牛老师讲GIS
2019/03/22
1.3K0
openlayers5中用iconfont作为图标
结合html2canvas实现openlayers中区域地图导出
GIS的“5M”应用中,有一个非常重要的应用领域——制图(Mapping)。然而现在的趋势是webgis的应用更为广泛,如何在web端实现地图的制图、导出与打印就是一个非常有用的功能,本文将结合html2canvas实现区域地图的导出。
牛老师讲GIS
2021/12/06
2.9K1
结合html2canvas实现openlayers中区域地图导出
mapboxGL卷帘实现
卷帘对比是webgis中常见的一种对比方式,本文讲述一下如何在mapboxGL中实现卷帘对比。
牛老师讲GIS
2021/09/10
1.8K0
R-ggspatial+ggplot2 实现带指北针和比例尺的空间地图绘制
继上次使用tmap包制作含有指北针(compass)和比例尺(scale bar)以及南海小地图的添加,详细内容分别见如下两篇文章:R-tmap 绘制带指北针和比例尺的空间地图和 R-tmap+grid 实现南海小地图的添加,得到了很多小伙伴的喜欢。虽然tmap包有着类似于ggplot2绘图语法,但对习惯使用ggplot2绘图的小伙伴怎不怎么友好。那么今天本期推文就使用 ggspatial 包实现指北针和比例尺的添加。主要涉及的知识点如下:
DataCharm
2021/02/22
2.8K0
R-ggspatial+ggplot2 实现带指北针和比例尺的空间地图绘制
推荐阅读
相关推荐
分享一个切片网格的生成函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验