Openlayer【四】—— 控件

news2024/11/15 9:17:49

控件

控件是一个可见的小部件,其 DOM 元素位于 屏幕。它们可以涉及用户输入(按钮),也可以仅供参考; 位置是使用 CSS 确定的。默认情况下,它们位于 容器,但可以使用 任何外部 DOM 元素。

其中ol/control是所有控件的基类,这里直接在vue3里面来实现了,前面的文章是基于vue2实现的,后续有时间的话会将其更新到vue3

import 'ol/ol.css'; // 注意要导入ol对应的样式文件,避免无样式导致控件位置不对而排查问题浪费时间
import {OverviewMap, ZoomSlider} from 'ol/control'

1、OverviewMap 概览地图

在创建了图层之后再通过OverviewMap控件添加到图层当中,由于所有的控件都是一个个的div元素加到页面上的,所以我们可以轻松的找到对应控件的类名进行样式覆盖

  const overviewMapControl = new OverviewMap({
    layers: [
      new TileLayer({
        source: new XYZ({
          url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.jpg'
        })
      })
    ],
    // Unicode 
    collapseLabel: '\u00AB', // 收起概览地图时的标签
    label: '\u00BB', // 展开概览地图时的标签
    collapsed: false, // true为收起来
    collapsible: true, // 是否可收起
    tipLabel: '这是一个提示'
  })
  map.addControl(overviewMapControl)

这里对OverviewMap 控件的属性进行简要说明

属性说明
className类名,默认类名是ol-overviewmap。使用了该属性将替换该类名,要考虑到新类名的样式
layers概览的图层,默认和初始化地图的layer保持一致即可
collapseLabel收起概览地图时的标签(都是Unicode编码的字符)
label展开概览地图时的标签
collapsed是否可收起
tipLabelcollapseLabel和label的提示文本
rotateWithView控件视图是否应随主地图视图一起旋转

2、ZoomSlider 缩放滑块

用于缩放的滑块类型的控件。

  map.addControl(new ZoomSlider({
    // className: 'demo-zoom-slider',
    duration: 1000	// 动画持续时间,默认为200 ms
  }))

3、FullScreen 全屏

提供一个按钮,单击该按钮时,地图将填满整个屏幕。 默认情况下,全屏源元素是包含地图视口的元素,除非 通过提供选项进行覆盖。在这种情况下,dom 使用此参数引入的元素将全屏显示。在全屏模式下,将显示一个关闭按钮以退出全屏模式。

  map.addControl(new FullScreen({
    label: '\u0046', // 默认展示为F
    labelActive: '\u0047', // 全屏时展示为G
    activeClassName: 'text-blue', // 全屏时展示G的css类名
    inactiveClassName: 'text-red', // 默认展示F的css类名
    tipLabel: '全屏 -- 文本' // 按钮的tip
  }))

4、MousePosition 鼠标位置

用于显示鼠标光标的 2D 坐标的控件。默认情况下,这些 位于视图投影中,但可以位于任何受支持的投影中。 默认情况下,该控件显示在地图的右上角,但 可以使用 CSS 选择器(ol-mouse-position)进行更改。

其中coordinateFormat指定一个回调函数用来对经纬度进行格式化处理

  map.addControl(new MousePosition(
      {
        coordinateFormat: function (coordinate: any) {
          const [x, y] = coordinate
          return x.toFixed(2) + ' , ' + y.toFixed(2);
        },
        placeholder: '等待鼠标移入', // 当鼠标不在地图上时展示这个
        projection: 'EPSG:4326',
      }
  ))

5、Zoom 缩放

具有 2 个按钮的控件,一个用于放大,一个用于缩小。 此控件是地图的默认控件之一。所以即使你未添加任何控件的时候这个控件还是会添加到页面上,那么如何处理掉这个控件呢?

  map = new Map({
    target: 'map',
    layers: [XXXXX],
    view: new View(XXXX),
    // 在地图上添加控件 默认会加上zoom控件,这里设置为[] 表示不加任何控件上去
    controls: [],
  })

6、ZoomToExtent 缩放到范围

一个按钮控件,按下该按钮时,会将地图视图更改为特定的 程度。

  map.addControl(new ZoomToExtent({
    label: '\u0057',
    tipLabel: '缩放到特定等级',
    // minX, minY, maxX, maxY
    extent: [115, 20, 120, 30]
  }))

7、ScaleLine 比例尺

针对视窗显示粗略 y 轴距离的控件。默认情况下,比例线将显示在地图的左下角。可以通过使用 CSS 选择器(ol-scale-line、ol-scale-bar)来更改

  map.addControl(new ScaleLine({
    bar: true,
    steps: 2
  }))

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1387671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存储的基本架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、存储的需求背景二、自下而上存储架构总结 一、存储的需求背景 1、人的身份信息需要存储 这种信息可以用关系型数据库,例如mysql,那种表…

4 - JdbcTemplate

spring 框架如何处理对数据库的操作呢? 1. 基本介绍 文档:JdbcTemplate APIs : /spring-framework-5.3.8/docs/javadoc-api/index.html JdbcTemplate 是 Spring 提供的访问数据库的技术。可以将 JDBC 的常用操作封装为模板方法 已经提供了特别多的 API 2. 使用…

说一说文件转换服务的系统设计

一、背景 我们需要把word/ppt转换为pdf,刚开始自研,后改为和第三方服务合作。 因为涉及到第三方服务的源码及软件著作的安全问题,我们约定把待转换的文件下载到对方管控的机器里,而不是在我们的机器上安装第三方的转换工具。 这…

从0开始学Git指令(3)

从0开始学Git指令 因为网上的git文章优劣难评,大部分没有实操展示,所以打算自己从头整理一份完整的git实战教程,希望对大家能够起到帮助! 远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不…

VUE项目快速打包发布

VUE项目快速打包发布 首先在你的VS Code中新建一个终端 输入 npm run build 回车等运行结束之后会在你的项目中生成一个dist目录 此时再iis部署的时候把你添加的网站指定的目录指向dist即可

202405读书笔记|《作家榜名著:宋词三百首(马未都亲笔推荐版)》——绿酒初尝人易醉,一枕小窗浓睡

《作家榜名著:宋词三百首(马未都亲笔推荐版)》画很美,词也是😘😘,既廖远又色彩明艳,丰富而丰盈,看的很欢乐的一本书。部分节选如下: 艳溢香融 天遥地远&…

为什么很多人不看好鸿蒙?轻舟已过万重山

其实这个争议存在很久了。但是到2023年9月份开始,华为秋季发布会上宣布了“鸿蒙不再兼容Android”当时就已经炸开了锅。这个消息让很多不看好鸿蒙的人都闭上了嘴。我们作为国人应该支持自己的操作系统。 鸿蒙4.0,轻舟已过万重山! 鸿蒙Harmo…

第七在线智能商品计划签约潮流风向标Alexander Wang亚历山大·王

Alexander Wang(亚历山大•王)是由华裔设计师王大仁于2004年创立的同名服装品牌,源自纽约,隶属意大利YOOX集团。主营业务涉及成衣、包袋、鞋履、配饰等。并以其简洁、时尚、前卫的设计风格而备受瞩目,它的设计融入了时…

代码随想录算法训练营Day21| 93.复原IP地址、78.子集、90.子集||

LeetCode 93 复原 IP 地址 本题思路:最重要的是想到一个收集结果的条件,也就是终止条件。 当 . 的个数达到三个时候,并且,判断最后剩余的是否符合要求,如果符合,说明整个ip地址可以,就加入到结…

16位单片机单片机S1C17153

16位单片机单片机 .16KB ROM / 2KB内存 * S1C17653对于程序开发很有用。 .产生具有内置振荡器的操作时钟。 - OSC3B振荡器电路:2MHz/1MHz/500kHz(类型)内部振荡器电路 -OSC1无振荡器电路:32.768 kHz(类型&#xf…

SpringBoot中整合ElasticSearch快速入门以及踩坑记录

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_本地运行若依前后端分离-CSDN博客 参考上面搭建项目。 ElaticSearch Elasticsearch 是java开发的,基于 Lucene 的搜索引擎。它提供了一…

【计算机组成与体系结构Ⅱ】MIPS指令系统(实验)

实验2:MIPS指令系统 一:实验目的 了解和熟悉指令级模拟器。熟练掌握MIPSsim模拟器的操作和使用方法。熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解。熟悉MIPS体系结构。 二:实验要求 采用指令集和流水线操作级模拟器…

安卓开发-02-基础

文章目录 一、基本UI组件文本类组件TextViewEditText 按钮类组件普通按钮为普通按钮添加的单击事件监听器 图片按钮单选按钮复选框(进行多选) 日期时间类组件日期选择器时间选择器计时器 二、高级UI组件进度条组件拖动条组件星级评分条图像类组件图像切换…

ML:2-2 neural network 如何完成预测

文章目录 1. 神经网络层2. 更复杂的神经网络3. 神经网络的前向传播forword propagation 【吴恩达机器学习笔记p47-49】 1. 神经网络层 【了解神经网络如何完成预测的】 input:4个数字的向量。3个神经元分别做logistic regression。下角标:标识第 i 个神…

AbstractHttpMessageConverter + easyexcell优雅下载附件

介绍 AbstractHttpMessageConverter 是 Spring 框架中用于处理 HTTP 消息转换的抽象基类。它用于处理来自 HTTP 请求的消息,并将其转换为特定的 Java 对象,或者将 Java 对象转换为 HTTP 响应消息。 这个抽象类允许开发人员创建自定义的 HTTP 消息转换器,以便在 Spring MVC…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的支持63个常见模块的PHP8.1.20的RPM包

本文适用:rhel8系列,或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期:2023年 因系统版本不同,构建部署应略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

计算机毕业设计 | SpringBoot+vue校园问卷调查系统(附源码)

1,绪论 研究目的 在进入21世纪以后,互联网得到了蓬勃的发展,电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后,传统问卷还存在很多弊端: 问卷分发起来比较困难,并且分发试卷耗费大量的金…

企业组网搭建有哪些?

在当今全球化的商业环境中,集团公司必须建立起一个无缝连接的网络,以确保高效的信息传输和资源共享。为实现这一目标,选择可靠而安全的网络组网方案至关重要。本文将介绍几种主要的集团公司网络组网方案,以帮助企业根据其具体需求…

算法通关村番外篇-跳表

大家好我是苏麟 , 今天来聊聊调表 . 跳表很少很少实现所以我们只了解就可以了 . 跳表 链表在查找元素的时候,因为需要逐一查找,所以查询效率非常低,时间复杂度是O(N),于是就出现了跳表。跳表是在链表基础上改进过来的&#xff0…

算法第十九天-二叉搜索树节点最小距离

二叉搜索树节点最小距离 题目要求 解题思路 今天题目重点: 1.二叉搜索树(BST) 2.任意两个不同节点 遇到二叉搜索树,立即想到这句话:[二叉搜索树(BST)的中序遍历是有序的]。这是解决所有二叉搜…