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

news2024/11/26 8:28:41

初识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

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

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

相关文章

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

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

敲敲云与简道云流程设计引擎对比:选择更适合您的产品

在当今数字化时代&#xff0c;流程管理和自动化变得越来越重要。作为APaaS服务的两个知名产品&#xff0c;敲敲云和简道云都提供了流程设计引擎&#xff0c;帮助企业实现高效的流程管理。然而&#xff0c;在比较两者之后&#xff0c;您可能会发现敲敲云在多个方面具有优势&…

2023年05月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 看图找规律,请问下图红框中是?( ) A: B: C: D: 答案:D 第2题 用一根绳子绕树一圈余30厘米,如果绕树二圈则差40厘米,请问绳子长多少厘米?( )<

经典文献阅读之--Surround-View Survey(自动驾驶中基于环视视觉的3D检测综述)

0. 简介 对于基于环视视觉的3D检测而言&#xff0c;目前已经有很多文章了。因为基于视觉的3D检测任务是自动驾驶系统感知的基本任务&#xff0c;然而&#xff0c;使用单目相机的2D传感器输入数据来实现相当好的3D BEV&#xff08;鸟瞰图&#xff09;性能不是一项容易的任务。这…

素质教育正式提出30周年 提高实际应用能力成为教育新选择

至2023年“素质教育”已正式提出30周年。在实施期间,素质教育取得了显著成就:不仅提高了学生的综合素质和竞争力,培养了学生的创新能力、实践能力等,同时也改变了应试导向和知识灌输的教育模式,建立了以人为本、以学为主的教育理念。 教育观念发生扭转,教育目标也随之改变。学…

jenkins-2.426.1-1.1.noarch.rpm 的公钥没有安装

执行命令 yum install jenkins 报错 jenkins-2.426.1-1.1.noarch.rpm 的公钥没有安装 下载的软件包保存在缓存中&#xff0c;直到下次成功执行事务。 您可以通过执行 yum clean packages 删除软件包缓存。 错误&#xff1a;GPG 检查失败 解决办法&#xff1a; 1、安装新的公…

OpenShift 4 - 就地调整 Pod 资源使用量

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 的环境中验证 文章目录 为什么需要就地调整 Pod 资源启动 InPlacePodVerticalScaling 特性实现就地调整 Pod 资源参考 为什么需要就地调整 Pod 资源 以往在 Kubernetes 中调整 Pod 的 …

事务死锁排查

记一次 事务死锁的排查过程 首先使用 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;可以查看当前数据库所有事务状态 使用 SHOW ENGINE INNODB STATUS可以查看一些事务状态 可以看出 trxId 565678168 锁住了 invoice表&#xff0c; 使用命令杀掉对应mysql线程&#xff0…

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…

【前段基础入门之】=>CSS3新特性 响应式布局

文章目录 概念媒体查询媒体类型媒体特性媒体运算符 概念 所谓对响应式布局方案的理解&#xff0c;众说纷纭&#xff0c;核心点就是同一套代码在不同尺度屏幕下的布局呈现方式的不同 社区中有很多人分享&#xff0c;并列出了多种实现响应式布局的方案&#xff0c;比如【 rem&…

少儿编程启蒙指南

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

渔业可视化渔业数字孪生

渔业可视化&渔业数字孪生 帮威客打造的渔业可视化&渔业数字孪生&#xff0c;适用于室内塘口养殖、室外塘口养殖、室外大水面养殖等场景&#xff0c;可运用于鱼类、虾类、贝类、蟹类、鳖类等水产作物养殖过程&#xff0c;旨在助力水产养殖日常管理的数字化、智能化、自动…

Android App 启动流程学习

App启动 壹、App启动流程图贰、流程图详细解读2.1、系统操作Zygote 进程的孵化应用资源和类加载App在启动后立即显示应用的空白启动窗口创建应用进程 2.2、进程开始步骤3、ActivityThread 被加载到内存中步骤3.2、ActivityThread.main()步骤4、ActivityManagerService.attachAp…

运维知识点-Windows操作系统cmd/Dos批处理命令与脚本手册bat

Windows操作系统命令与脚本总结 管理员权限&#xff1a;添加账号并加入管理员组添加用户至远程桌面组允许修改密码 防火墙 :关闭防火墙 匹配出注册表信息中的软件&#xff1a;获取完整补丁信息&#xff08;比systeminfo全&#xff09;&#xff1a;获取系统和版本信息显示本地或…

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

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

高防IP是什么,高防IP有什么作用?

什么是高防IP&#xff1f; 高防IP是一款专业解决大流量攻击的安全防护产品&#xff0c;支持网站和非网站类业务的DDoS、CC防护&#xff0c;用户通过配置转发规则&#xff0c;将攻击流量引至高防IP并清洗&#xff0c;保障业务稳定可用&#xff0c;具有灾备能力&#xff0c;线路…

深度学习YOLO安检管制物品识别与检测 - python opencv 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&…

QT 使用mysql

版本&#xff1a;ubuntu&#xff1a;20.04.1 mysql&#xff1a; 8.0.35 QT &#xff1a;5.12.8 1.安装mysql sudo apt install mysql-server 下载完后查看mysql状态 sudo service mysql status 如下图active&#xff08;running&#xff09;则下载成功&#xff0c;运行中…

AI创作系统ChatGPT网站源码/支持DALL-E3文生图/支持最新GPT-4-Turbo模型+Prompt应用

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

python大数据毕设选题

文章目录 0 前言1 大数据毕设选题推荐2 开题指导3 最后 0 前言 大家好&#xff01;大四的同学们&#xff0c;毕业设计的时间即将到来&#xff0c;你们准备好了吗&#xff1f;为了帮助大家更好地开始毕设&#xff0c;我作为学长给大家整理了最新的计算机大数据专业的毕设选题。…