WebGIS实战:Vue+Openlayers实现地图控件的加载与控件自定义位置

本文围绕Openlayers地图控件展开,介绍了Openlayers自带及Openlayers - Extension提供的多种地图控件,如地图基本信息、全屏显示、图层切换等控件。还讲述了通过CSS文件调整控件位置的方法,最后提及下一步将介绍加载Mapserver/GeoServer发布的地图数据,相关源码已上传至GitHub。

相关Web GIS实战信息:
上一篇博客:WebGIS实战:Vue+Openlayers实现网络地图的加载与切换
下一篇博客:

前言

在上一节《WebGIS实战:Openlayers实现网络地图的加载与切换》中,我们已经用到了一个地图控件了——图层切换控件(由Openlayers-Extension实现),这一节将讲述我们可能还会用到什么控件,而且由于这些控件位置都是固定在地图的某一位置,有时不满足我们的布局需求,这就需要我们知道怎么调整这些控件的位置了

项目源码
注意: 上一节中,我们创建了一个controls.js文件来统一管理我们的地图控件,本节还是基于此,将新添加的控件都放在controls.js中。对于需要用到的控件直接在地图初始化时添加到controls属性中,如下代码所示

BaseMap.vue

import {
   
   controls} from "@c/js/controls";//导入控件管理文件

let mMap = new Map({
   
   
      //挂载目标元素
      target: 'map',
      //显示的地图
      layers: [baseLayerGroup, vectorLayer],
      //表层图层
      overlays: [],
      //在此设置地图控件
      controls: [controls.zoom, controls.overview, controls.switcher, controls.fullScreen, controls.attr],
      //开启交互时加载瓦片
      loadTilesWhileInteracting: true,
      //地图显示中心
      view: view
    });

controls.js

import {
   
   defaults} from 'ol/control'
export const controls = {
   
   
  //定义控件格式
  控件命名: new 控件名称({
   
   
    //控件属性
    
  }),

  // 默认控件()
  default: defaults() // 没有new
};

1、Openlayers自带的地图控件介绍与展示

注意:括号中的英文名称链接到控件的API文档。由于每个控件比较零散,所以把代码全部放在最后面的controls.js文件中,读者请根据注释对应

  • 地图基本信息控件(Attribution):显示地图资源的版权信息
    在这里插入图片描述

  • 地图全屏显示控件(FullScreen):在浏览器中全屏显示地图,按esc退出全屏
    在这里插入图片描述

  • 鼠标位置控件(MousePosition):实时显示鼠标当前的坐标
    在这里插入图片描述
    对于位置覆盖的控件,可以查看第三小节了解如何调整位置

  • 地图鹰眼拖拽控件(OverviewMap):用户拖拽鹰眼图中的小矩形,主图显示对应的区域
    在这里插入图片描述

  • 地图比例尺控件(ScaleLine):显示当前的地图比例尺
    在这里插入图片描述

  • 地图缩放按钮控件(Zoom):点击+/-,实现放大和缩小显示等级
    在这里插入图片描述

  • 地图缩放拉条控件(ZoomSlider):通过拉动条位置,实现实现放大和缩小显示等级
    在这里插入图片描述

  • 地图指定范围跳转控件(ZoomToExtent)不常用:移动到指定范围的位置
    在这里插入图片描述

2、Openlayers-Extension提供的地图控件介绍与展示

  • 图层切换控件(LayerSwitch):用于控制图层显示与否,可以拖拽图层移动到顶层
    在这里插入图片描述

  • WMS加载控件(WMSCapabilities):在线搜索与加载wms地图数据
    在这里插入图片描述

  • 地图鹰眼点击控件(Overview):点击鹰眼图上的位置,然后主图平移到对应的位置
    在这里插入图片描述

  • 地球鹰眼转动控件(Globle):移动主图后在地球鹰眼图同时定位显示
    在这里插入图片描述

  • 地图书签标记控件(GeoBookMark):为当前的界面添加界面,点击书签名字自动切换到对应界面
    在这里插入图片描述
    在这里插入图片描述

  • 屏幕滑动对比控件(Swipe):中间的控件可以拉动,类似帘子效果,有水平模式与垂直模式
    在这里插入图片描述

  • 地图工具栏控件(ControlBar):将相关性比较高控件整合为一个工具栏
    在这里插入图片描述

  • 地图界面打印控件(Print)):将当前的地图页面进行下载,省去用其他工具截图,而且更加清晰。需要依赖file-saver库。
    在这里插入图片描述

  • 地图中心控件(Target):显示地图的中心
    在这里插入图片描述

  • 图例控件(Legend):用于显示图层的图例信息
    在这里插入图片描述

3、地图控件位置调整

以上介绍了那么多控件,总有一些控件会重叠在一起,如果此时我们都需要这些控件的话,就需要调整控件的位置(上图的OverviewMap 与 Legend 控件就重叠在一起了)。下面以调整Legend控件到右边为例,介绍如何通过CSS文件调整控件的位置。

  • 在src/assets下新建一个文件夹scss并创建一个scss文件
    在这里插入图片描述

  • 针对控件编写CSS样式
    在这里插入图片描述

  • 引入到BaseMap.vue文件中
    在这里插入图片描述

  • 通过className引入自定义的类样式,调整放置位置。注意:需要在控件原样式之前添加我们自己定义的样式
    在这里插入图片描述

  • 调整结果
    在这里插入图片描述

4、下一步计划

至此,关于Openlayers中常用的地图控件的使用方法与自定义位置就介绍完了。

目前,我

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oruizn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值