OpenLayer系列——【一】初识OpenLayer与OpenLayer视图操作

初识OpenLayer

1、初始化地图渲染

安装openlayer依赖

npm i ol

首先准备一个容器用来渲染地图

<div id="map" ref="map" style="width: 100%; height: 100%" />

导入依赖初始化地图

import 'ol/ol.css';
import OSM from 'ol/source/OSM.js';
import { Map, View } from 'ol';
import TileLayer from 'ol/layer/Tile';
import XYZ from 'ol/source/XYZ';

this.map = new Map({
  target: "map",
  layers: [
    new TileLayer({
      source: new XYZ({
        url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.jpg"
      })
    })
  ],
  view: new View({
    center: [116.403218, 39.92372],
    zoom: 0,
    minZoom: 1,
    maxZoom: 12,
    // 视角旋转
    rotation: Math.PI / 5,
    // 视图约束
    extent: [110, 20, 120, 30]
    // 地图坐标系的类型
    projection: "EPSG:4326"
  })
});

在这里插入图片描述

其中视图View对象全部可以使用的属性如下

属性名说明
center地图视图的中心点坐标。它是一个包含经度和纬度的数组,例如[116.403218, 39.92372]
zoom地图的缩放级别
minZoom地图的最小缩放级别
maxZoom地图的最大缩放级别
rotation地图视图的旋转角度。它以弧度为单位,例如Math.PI / 5表示逆时针旋转36度
extent地图视图的可见范围。它是一个包含最小经度、最小纬度、最大经度和最大纬度的数组,例如[110, 20, 120, 30]。这个属性定义了地图可见区域的边界
projection地图视图的投影方式。它定义了地图坐标系的类型,例如"EPSG:4326"表示使用WGS84坐标系
resolutions地图的分辨率数组。它定义了每个缩放级别对应的地图分辨率。数组元素的顺序应该与缩放级别一致
constrainResolution布尔值,表示是否约束地图分辨率。当该属性设置为true时,地图将自动根据可用的分辨率调整缩放级别
enableRotation布尔值,表示是否允许旋转地图。当该属性设置为false时,禁止用户旋转地图视图
enableZoom布尔值,表示是否允许缩放地图。当该属性设置为false时,禁止用户缩放地图视图
enablePan布尔值,表示是否允许平移地图。当该属性设置为false时,禁止用户平移地图视图
smoothExtentConstraint布尔值,表示是否使用平滑约束范围。当该属性设置为true时,地图平移和缩放时会平滑过渡到约束范围内
smoothResolutionConstraint布尔值,表示是否使用平滑约束分辨率。当该属性设置为true时,地图缩放时会平滑过渡到约束分辨率

在openlayer当中还提供了一个地图图层OSM

this.map = new Map({
  target: "map",
  layers: [
    new TileLayer({
      source: new OSM()
    })
  ],
  view: new View({
    center: [0, 0],
    zoom: 2
  })
});

2、获取当前视图的属性

// 当前层级
this.map.getView().getZoom()
// 当前中心点
this.map.getView().getCenter()

3、层级切换

在openlayer当中我们可以发现zoom就是用来控制层级的,所以我们可以直接通过获取View之后直接修改Zoom用来实现层级切换,

this.map.getView().setZoom(10)

但是这样是直接切换层级放大缩小没有动画效果,看起来交互就不是很好,我们可以给这个层级加上一个延时动画,通过view,animate传递一个对象进去用来控制,当然这里不单单只是可以控制zoom、还可以控制其他View里面的属性。

const view = this.map.getView();
const zoom = view.getZoom();
const duration = 2000;

view.animate({
  zoom: zoom + 1,
  center: [16.403218, 39.92372],
  rotation: Math.PI / 3,
  duration
});

4、区域定位

在实际开发过程当中,比方说在地图上展示了20个点,而后我们想刚刚好让这20个点在某个层级之下刚刚好全部展示,这时我们即不知道中心位置,也不知道它到底要放大到什么层级,这个时候可以通过区域定位来实现,也就是地图视图聚焦

const bounds = [116, 28, 125, 34];
const width = this.map.getSize()[0];
const height = this.map.getSize()[1];

// 将地图视图聚焦至初始范围
this.map.getView().fit(bounds, {
  size: [width, height],
  padding: [50, 50, 50, 50],
  minResolution: 0,
  duration: 2000,
  easeOut: function (t) {
	return 1 - Math.pow(1 - t, 2);
  }
});

这里的属性配置在下面简单说明一下

属性说明默认值
bounds数组,聚焦的四个顶点
size数组,地图视图的宽度和高度
padding设置了地图视图与边界的间距,单位(px)
minResolution地图视图的最小分辨率
duration数字,表示动画过渡的持续时间,单位(毫秒)undefined
easing函数,表示动画过渡的缓动函数undefined
maxZoom数字,表示最大缩放级别
nearest布尔值,表示是否使用最近的分辨率false
constrainResolution布尔值,表示是否限制分辨率true

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新AI创作系统ChatGPT系统运营源码+支持GPT-4多模态模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

浅谈智能安全配电装置应用在银行配电系统中

【摘要】银行是国家重点安全保护部分&#xff0c;关系到社会资金的稳定&#xff0c;也是消防重点单位。消防安全是银行工作的重要组成部分。在银行配电系统中应用智能安全配电装置&#xff0c;可以提高银行的智能控制水平&#xff0c;有效预防电气火灾。 【关键词】银行&#…

Python 集成 Nacos 配置中心

Python 集成 Nacos 配置中心 下载 Nacos 官方 pyhton 库 pip install nacos-sdk-python # 指定国内阿里云镜像源 pip3 install nacos-sdk-python -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com配置 Nacos 相关信息 Global:nacos:port: 8848…

高阶数据结构---树状数组

文章目录 楼兰图腾一个简单的整数问题 一个简单的整数问题2谜一样的牛 一、楼兰图腾OJ链接 二、一个简单的整数问题OJ链接 三、一个简单的整数问题2OJ链接 四、谜一样的牛OJ链接

Redis篇---第四篇

系列文章目录 文章目录 系列文章目录前言一、说一下 Redis 有什么优点和缺点二、Redis 缓存刷新策略有哪些?三、Redis 持久化方式有哪些?以及有什么区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

文件包含_具体场景、zip、php相关问题

具体场景—上传可控的文件 具体场景—远程文件包含 具体场景—伪协议

编译和链接

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理&#xff08;预编译&#xff09; 2.2 编译 2.2.1 词法分析&#xff1a; 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 2…

开发知识点-Git

团队协作-Git Giteegitee 创建仓库打开项目所在目录&#xff0c;右键选择Git Bush Here(你要确定电脑上已经安装了Git&#xff09;初始化本地仓库配置验证信息。 完美解决github访问速度慢介绍Git 与 SVN 区别IDEA 添加 gitee Gitee Git Gitee 大家都知道国内访问 Github 速度…

SOLIDWORKS知识点放送——什么是SOLIDWORKS布局草图?

什么是SOLIDWORKS布局草图&#xff1f;利用布局草图&#xff0c;我们可以“自顶向下”的设计出一个装配体。装配体用2D草图做个整体规划布局&#xff0c;利用此草图生成所有零件的基准。通过改变布局草图来更新装配体文件的内容。草图来定义零部件的大小、形状以及它在装配体的…

Vmware虚拟机创建快照、克隆和备份 创建文件夹共享方法

Vmware虚拟机备份 方法一&#xff1a;虚拟机快照备份 虚拟机 快照备份 像是Windows系统里的系统 还原点 功能&#xff0c;它能拍摄一张您虚拟机当前的状态&#xff0c;并将其保存起来&#xff0c;您可以随时通过恢复到快照功能将虚拟机还原到拍摄快照时的状态。 步骤1. 打开…

Linux环境下离线安装jdk1.8(内置最新的jdk安装包x64)

一、下载JDK 1.官网下载 官网地址&#xff1a;Java Downloads | Oracle 大多数人的Linux操作系统都是64位的&#xff0c;因此我们就选择64位的压缩包文件&#xff0c;jdk1.8_381是jdk1.8的最新版本。 2.百度网盘下载 链接&#xff1a;https://pan.baidu.com/s/1we_52oylG-el…

【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖

uniapp 顶部导航和弹窗被video遮挡解决办法 第一步&#xff1a;配置 subNVues {"path": "pages/index/index","style": {"navigationBarTitleText": "uni-app","navigationStyle": "custom","app-…

2023年,全球CIO最关注的问题是什么?

面对AI大潮&#xff0c;全球CIO们在焦虑什么&#xff1f;随着全球数字化转型步伐的加速&#xff0c;CIO的角色发生了哪些转变&#xff1f; 继2022年5月发布首份全球CIO报告之后&#xff0c;联想集团今年又发布了以“韧性的全球首席信息官&#xff08;The Resilient CIO&#xf…

VBA如何快速识别Excel单元格中的文本数字

Excel中一种非常特殊的数字&#xff0c;这些数字看似数字&#xff0c;其实是文本格式&#xff08;下文简称为文本数字&#xff09;&#xff0c;在单元格的左上角会有一个绿色小三角作为标志&#xff0c;如B1:B3单元格。 在编程时为什么需要区分普通数字和文本数字呢&#xff…

线下保薪班开启

大家都知道我们有线上班&#xff0c;对于想技能提升的同学来说&#xff0c;线上足以满足技能提升需求&#xff0c;对于想转行找工作&#xff0c;或者学生想就业的同学来说&#xff0c;线上却并不是一个好的选择&#xff0c;担心的可能有:担心自身基础较弱怕学不懂&#xff0c;担…

少儿编程启蒙指南

《少儿编程启蒙指南》大纲 本文详细阐述少儿编程启蒙&#xff0c;由于章节别叫多所以本章是个目录想要详细内容&#xff0c;点击每一章链接查看&#xff01; 第一章&#xff1a;导言 介绍&#xff1a; 少儿编程的重要性和趋势。为什么编程&#xff1a; 理解为何孩子学习编程…

core dump(介绍,status中的core dump标志,应用--调试),ulimit命令

目录 core dump(核心转储) 引入 介绍 core dump标志 引入 介绍 应用 -- gdb调试 注意点 ulimit命令 -a -c 示例 -- core file大小问题 core dump(核心转储) 引入 我们可以看到,不同的signal对应不同的编号和action:其中action主要分为term和coreterm就是终止的意…

如何通过数据治理来提升业务价值——业务场景治理

数据治理&#xff0c;一方面是为了对数据的规范管理和控制&#xff0c;还有一方面是让数据能够为业务提供服务和创造价值。近些年来&#xff0c;随着数据治理技术发生着日新月异的变化&#xff0c;行业对数据治理的需求和指导也被逐步推进和实践&#xff0c;从宏观上看&#xf…

本地MQTT协议消息服务远程连接教程介绍

Mosquitto是一个开源的消息代理&#xff0c;它实现了MQTT协议版本3.1和3.1.1。它可以在不同的平台上运行&#xff0c;包括Windows、Linux、macOS等。mosquitto可以用于物联网、传感器、移动应用程序等场景&#xff0c;提供了一种轻量级的、可靠的、基于发布/订阅模式的消息传递…

AI视频检索丨历史视频标签化,助力重要事件高效溯源

随着科技的不断发展&#xff0c;安全监控已成为我们生活中不可或缺的一部分。当发生盗窃、人员走失、安全事故等重要事件时&#xff0c;常常需要通过查看视频回放了解事情经过&#xff0c;为解决问题提供证据或指明查找方向。但是&#xff0c;人工查看视频回放往往费时费力&…