js 库,有着各自的交互系统和坐标系,首先我们将某些我们需要获取在 HT 上做的交互事件并停止事件传播到 OpenLayers 上: // 拖拽 node 时不移动地图 var stopGraphPropagation...,缩放的时候并不实时保持大小,而是根据地图的缩放来缩放,实时保持在电信 GIS 地图的某个位置,所以我对 Shape 类型的节点中所有的点遍历了一遍,都设置了业务属性 pointCoord,获取地图视图投影中的坐标...insertBefore 在指定的已有子节点(参数二)之前插入新的子节点(参数一) 并对数据容器增删变化事件进行监听,通过监听当前加入数据容器的节点类型,将当前节点的像素坐标转为地图视图投影中的坐标存储在节点的业务属性...坐标转换 重设拓扑在这边的意思就是将拓扑图中节点坐标从我们一开始设置在 HT 中的像素坐标重新通过地图的缩放或者移动将地图视图投影中的坐标转为像素坐标设置到节点上,这时候前面存储的业务属性 coord...,来看看我添加后的最终结果: http://www.hightopo.com/demo/openlayers/ ?
一、本文简介 除了用鼠标滚轮在地图上缩放外,还可以使用 ol 提供的 api 设置地图缩放级别。...获取当前缩放级别:View.getZoom() 设置缩放级别:View.setZoom() 【注意:本文使用的图源是 OSM ,正式开发不能用 OSM ,因为 OSM 的中国边界有点问题!!!】...{ source: new OSM() // 图层数据源 }) ], view: new View({ // 地图视图 projection: "...() { let view = map.value.getView() // 获取当前视图 let zoom = view.getZoom() // 获取当前缩放级别 view.setZoom...(zoom - 1) // 设置缩放级别 } onMounted(() => { // 在元素加载完之后再执行地图初始化 initMap() }) <style lang
theme: smartblue highlight: a11y-light 一、本文简介 本文案例使用 Vite 搭建项目,在 Vue 3 的基础上使用 OpenLayers 。...OpenLayers简介 OpenLayers 可以轻松地在任何网页中放置动态地图。它可以显示从任何来源加载的地图图块、矢量数据和标记。OpenLayers 的开发旨在进一步使用各种地理信息。...如果项目是互联网方向的,可以选择百度、高德之类的地图库,这类的文档、问答资源、api等各方面在国内都比较完善。...每一个地图都是一个 Map 对象。。 View:是地图视图,控制地图缩放等基础交互,以及地图投影坐标系、地图中心、分辨率、旋转角度等。 Tile: 翻译成中文就是 “瓦片”。这项是必须的。...【step 4】在 mounted 后渲染地图 在元素挂载到页面后才执行渲染函数。onMounted 是 Vue3 提供的一个生命周期函数。
概述: OpenLayers 3对OpenLayers网络地图库进行了根本的重新设计。版本2虽然被广泛使用,但从JavaScript开发的早期发展阶段开始,已日益现实出它的落后。...OL3结构图 1、Map OpenLayers 3的核心部件是Map(ol.Map)。它被呈现到对象target容器(例如,包含在地图的网页上的div元素)。...所有地图的属性可以在构造时进行配置,或者通过使用setter方法,如setTarget()。 ?...放大zoom 选项是一种方便的方式来指定地图的分辨率,可用的缩放级别由maxZoom (默认值为28)、zoomFactor (默认值为2)、maxResolution (默认由投影在256×256像素瓦片的有效成都来计算...var osmLayer = new ol.layer.Tile({source: osmSource}); map.addLayer(osmLayer); 总结: 上述片段可以合并成一个自包含视图和图层的地图配置
一、需求说明 开发中遇到一种需求: 需要展示地图,但默认不影响页面滚动。 点击地图后,在地图上方滚动鼠标滚轮可以缩放地图。...点击地图之外的地方,鼠标再回到地图上滚动滚轮时,页面可以上下滚动,但地图不会缩放。...图层 new Tile({ // 瓦片 source: new OSM() // OSM底图 }) ], view: new View({ // 地图视图...地图容器(HTML) 部分添加了一个 tabindex 属性,有了该属性,鼠标放到地图容器上默认也是不会被选中的,所以滚动的时候就是触发页面滚动,不会操作到地图。...如果不清楚 OpenLayers 是什么,可以阅读: 『Vite + Vue3 + OpenLayers 起步』
这也是网络地图服务(Web Map Service,以下简称WMS)的含义,可以将传统意义上的矢量数据或者栅格数据,发布成图片形式的地图数据,供浏览器的用户使用。...在之前的文章《地图服务器GeoServer的安装与配置》中我们安装配置了一个GeoServer,不过进入的网页是一个没有登录的主页。要使用发布地图服务的功能,首先要登录。...GeoServer默认的用户名是admin,默认密码是geoserver,登录后的主页如下图所示: 依次进入或点击【数据】——【工作空间】——【添加新的工作空间】,工作空间是用来管理发布地图的集合,如下图所示...有点特别的是WMS的OpenLayers格式,可以直接提供一个地图网页,可以进行交互操作、显示地理位置、拾取特征属性以及选项配置等,如下图所示: 3....同样还是选择WMS服务的OpenLayers格式,显示的地图网页如下图所示。这个网页同样可以交互操作、显示地理位置、以及选项配置等,不过有意思的是还可以点击拾取鼠标位置的具体像素值。
--定位坐标的css样式,带一些水波效果,可以不加,在updateMarker生成标记的地方,用img的url链接即可--> 的高德地图秘钥&plugin=AMap.Transfer">--> <!...展示效果如上图 注意: 1.高德地图示例也有聚合显示个数的,但是为网格聚合,按照面积计算,不适合用其为基础模板,应当选用带有海量展示点和的行政区域聚合 2.由于电脑和移动端屏幕可视区域不同,由缩放逻辑控制的显示情况可能会出现差异...zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false buttonPosition: 'RB...在高德地图-浏览器定位的官方文档上有这样的一句注释“/*************************************** 由于Chrome、IOS10等已不再支持非安全域的浏览器定位请求
最近一直在考虑一件事情,那就是openlayers中自定义wms的图层控制。...用过openlayers的人都知道,在openlayers中有自带的图层控制的控件,调用方法也很简单: map.addControl(new OpenLayers.Control.LayerSwitcher...,可以很方便的实现WMS的图层控制,但是在openlayers的wms没有类似的实现方法,所以得自己考虑实现。...,如果有子节点被选中,在地图中将wms图层移除,再定义wms的图层为选中的子节点,并设置其可见为true,并将wms添加到地图中,这时选中的涂层就会在地图中显示;如果没有节点被选中,在地图中将wms图层移除...实现后的效果如下: ? 没有节点选中 ? 选中“省级行政区”节点 总结:虽然在效果上实现了类似于图层控制的效果,但是始终感觉这种方式不怎么靠谱,不知道哪位仁兄有更好的办法,小弟在线等答案!
theme: smartblue 本文简介 image.png 将地图切换到不同容器里展示。 不管在地图上做任何操作,切换容器后,操作过的内容也是会同步过去。...思路 使用 ol 提供的方法可以获取 当前地图所在容器 和 设置地图到新的容器 里。...[ // 图层 new Tile({ source: new OSM() // 图层数据源 }) ], view: new View({ // 地图视图...'map2' : 'map1' 如果当前在 map1 的话,就返回 map2 ,否则返回 map1 。通过这样操作就可以把地图来回切换容器了。...如果不清楚 OpenLayers 是什么,可以阅读: 『Vite + Vue3 + OpenLayers 起步』
在前面《百度地图、ECharts整合HT for Web网络拓扑图应用》我们有介绍百度地图和 HT for Web 的整合,我们今天来谈谈 OpenLayers 和 HT for Web 的整合。...,也就是OpenLayers的tile地图图片在下方,GraphView的组件在上方,由于GraphView默认是透明的,因此非图元部分用户可穿透看到地图内容。...HT和OpenLayers组件叠加在一起之后,剩下就是拓扑里面图元的摆放位置与经纬度结合的问题,常规网络拓扑图中存储在ht.Node图元的position是逻辑位置,和经纬度没有任何关系,因此在GIS应用中我们需要根据图元的经纬度信息换算出...position的屏幕逻辑坐标信息,如果你知道投影算法也可以自己提供函数处理,但所有GIS组件都提供了类似的API函数供调用,当然这部分也没有标准化,不同的GIS组件需要调用的API都有差异,但基本原理是一致的...显示搞定后剩下就是交互的问题了,HT自己有套交互体系,OpenLayers也需要地图漫游和缩放的交互,两者如何结合呢?
,也就是OpenLayers的tile地图图片在下方,GraphView的组件在上方,由于GraphView默认是透明的,因此非图元部分用户可穿透看到地图内容。...HT和OpenLayers组件叠加在一起之后,剩下就是拓扑里面图元的摆放位置与经纬度结合的问题,常规网络拓扑图中存储在ht.Node图元的position是逻辑位置,和经纬度没有任何关系,因此在GIS应用中我们需要根据图元的经纬度信息换算出...position的屏幕逻辑坐标信息,如果你知道投影算法也可以自己提供函数处理,但所有GIS组件都提供了类似的API函数供调用,当然这部分也没有标准化,不同的GIS组件需要调用的API都有差异,但基本原理是一致的...细心的同学会想到转换是双向的,有可能用户需要拖动图元节点改变其经纬度信息,这时候我们就需要另外一个方向函数,即根据屏幕逻辑坐标转换成当前坐标对应的经纬度,在OpenLayers中我们通过map.getLonLatFromPixel...显示搞定后剩下就是交互的问题了,HT自己有套交互体系,OpenLayers也需要地图漫游和缩放的交互,两者如何结合呢?
,经常在第一次加载的时候出现偏移,导致关键的点位无法准确呈现在屏幕上,而且点位偏移的很离谱。...解决方案:监听地图瓦片加载完成事件 要解决这个问题,核心是判断地图瓦片加载完成的时机,确保在瓦片加载完成后再去设置中心点和缩放级别。...由于 centerAndZoom 方法会立即触发地图渲染,因此放在最初调用。 监听 tilesloaded 事件 tilesloaded 是地图瓦片加载完成的标志事件。...在事件回调中,我们可以安全地再次调整地图的中心点和缩放级别,确保地图显示正确。 缩放级别的设置 setZoom(zoom) 会有一个小小的放大动画效果,为用户提供更好的视觉体验。...整个过程虽然花了一些时间,但问题解决后的那种成就感,还是挺开心的。希望本篇文章可以帮助到你,欢迎在评论区与我交流。
为何使用maptalks 做过地图的小伙伴们都知道,每个地图框架产商都与自家的地图资源进行绑定,如非常受欢迎的mapBox、高德、百度、腾讯等,你必须注册他们产品,获取key,然后调用的api,才能进行地图的相关操作...说到自主,作为中国人也是有亲身体会的,作物基因专利、光刻机、软件等等,由外国掌控核心技术,作为使用者的我们只能认栽吃瘪,maptalks是我们国人开源的一个地图框架,可以自定义我们的地图资源,不用第三方支持...创建图层 创建图层的方式有两种: 在创建地图实例的同时创建图层: 2个参数,必填参数为第一个(id),第二个参数是options,是它的图层属性设置,一般默认就行,后面也可以通过图层对象进行设置。...new maptalks.VectorLayer('v').addTo(map) 放大缩小等工具 在地图初始化时,我们也可以添加一些我们的工具: 它提供了new maptalks.control.Toolbar...我们所观看到的视图,只会是我们设定好的区域,这块区域默认是地图初始化时设定的center lockView() { const extent = this.map.getExtent()
学习内容 Google Map服务简介 获取Google Map API Key 根据 GPS信息在地图上定位 根据GPS信息地图上跟踪用户轨迹 调用Google的地址解析服务 根据地址在地图上定位...能力目标 了解Google Map服务 掌握获取Google Map API Key的方法 能够根据 GPS信息在地图上定位 能够根据GPS信息地图上跟踪用户轨迹 掌握调用Google的地址解析服务...它提供了三种视图:一是矢量地图(传统地图),可提供政区和交通以及商业信息;二是不同分辨率的卫星照片(俯视图);三是地形视图,可以用以显示地形和等高线。...例如:可以缩放和平移地图,可以更改地图模式(例如,从卫星视图更改为街道视图),可以向地图添加自定义数据等等;位置API则提供了GPS数据和实时位置数据的处理。...虽然Geocoder工具类提供了上面两个方法来进行地址解析和反向地址解析,但实际上这个类还是需要调用网络上的Google服务。
使用 canvas 开发的项目,滚轮缩放画布的需求应该不算少数,比如地图。 Fabric.js 也提供了缩放画布的功能,本文主要讲解设置画布大小的几种方法。 动手实现 在动手前先查查文档。...我把和本文相关的文档放在这 mouse:wheel:滚轮事件 getZoom:获取画布当前缩放级别 setZoom:设置画布缩放级别 zoomToPoint:设置画布缩放比例及缩放原点 其中 setZoom...起步 在使用缩放功能之前,先初始化一下画布。 我还会在画布上设置一个背景图,便于观察。...getZoom 可以获取画布当前缩放级别,用 setZoom 设置一个新的缩放级别。 所以我在页面上再加2个按钮,一个放大,一个缩小。...this.canvas.zoomToPoint( { // 关键点 x: opt.e.offsetX, y: opt.e.offsetY }, zoom // 传入修改后的缩放级别
概述 用过的百度地图的人都非常喜欢百度地图里面的周边搜索功能,它能够通过拖拽查询范围的大小,甚是好用。在本文,仿百度实现类似的效果。 效果 ? ?...实现思路 在实现的时候,有几个点: 1.通过overlay实现拖动工具; 2.添加div的ondrag事件添加拖动; 3.保持y不变,控制只能在横向拖动; 4.通过伪元素:after实现圆的半径的展示...map.getPixelFromCoordinate(center); var pixel = [ev.clientX, _pixel[1]]; var coord = map.getCoordinateFromPixel
一、写在前面 在项目中往往使用地图作为底图(比如 天地图卫星图等),再其上覆盖你的通过geoserver发布自定义图层。本文记录了我的实现方法。...我的解决方法是,使用geoserver作为 GIS 地图服务,发布 GEO TIFF 图层,再在Openlayers 中展示。...无人机拍摄制作的正射影像图在地图展示会很突兀,在卫星图上展示比较合适,我选择了支持 EPSG:4326 坐标系的天地图 2.2 方法和步骤 整体来说,就是先制作 正射影像图,发布成图层,并在 Web 前端展示的过程...图层 使用Geoserver发布图层的操作步骤: 1、添加工作区(工作空间) 2、添加存储仓库(数据源)并发布 3、添加图层 完成后,就可以通过 WMS 服务来使用图层了。...WMS服务:Web Map Service,⽹络地图服务或者⼜叫动态地图服务,是利⽤具有地理空间位置信息的数据制作地图,其中将地图定义为地理数据的可视化表现,能够根据⽤户的请求,返回相应的地图,包括PNG
theme: smartblue 一、本文简介 鼠标在地图上点击会出现一个弹窗,并且出现在鼠标指针上方。 如果在地图边缘点击,会保证弹窗能完整显示出来,所以会稍微移动底图。...起步』 三、思路与编码 思路 初始化地图 地图点击事件,并获取当前点击的坐标位置 弹出窗口 初始化地图 初始化地图详细操作可以查看 『Vite + Vue3 + OpenLayers 起步』 要初始化地图...,首先需要引入 ol 提供的基础服务 还需要一个地图容器(我使用的是一个 div 标签) 然后通过 ol 提供的方法绑定这个容器 配置基础参数,渲染地图 地图点击事件 ol 提供了一系列的交互事件,其中就有...template> import { ref, onMounted } from 'vue' import { Map, View } from 'ol' // 引入容器绑定模块和视图模块...() // 在地图初始化完成后再绑定点击事件 } // 点击地图事件 function mapClick() { map.value.on('singleclick', evt => { // 绑定一个点击事件
OpenLayers简介 OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求...、TopoJSON、KML、GML和其他格式的矢量数据 支持OGC制定的WMS、WFS等GIS网络服务规范 支持在移动设备上运行 可以通过css来为地图控件设置样式 面向对象开发方式,在OpenLayers...安装 npm i ol 实例化地图 要显示一个基本的地图首先需要提供一个容器,设置好宽高,然后引入OpenLayers,添加一个地图图层,地图服务可以使用内置的一个开源地图OSM,也可以使用其他的在线瓦片服务...显示要素 在地图上显示一些自定义元素可以说是最基本也是最常见的需求,如果要显示的元素结构或样式比较复杂,可以使用Overlay,它可以将DOM元素在地图上进行显示,并将随地图一起移动。...feature上,也可以统一设置在矢量图层上 /* let vector = new VectorLayer({ source: source, style: new Style({
领取专属 10元无门槛券
手把手带您无忧上云