13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程

在 WebGIS 开发中,鹰眼控件 是一个常用的功能,它可以为用户提供当前地图位置的概览,帮助更好地定位和导航。在本文中,我们将基于 Vue 3 的 Composition API 和 OpenLayers,创建一个简单的鹰眼控件示例。


效果预览

在最终效果中,地图中会加载一个支持缩放、拖动的主地图,同时左下角显示一个缩略图(鹰眼图),展示全局视图并同步更新。


开发环境

  • 框架:Vue 3
  • 地图库:OpenLayers 6+
  • 样式工具:内置 CSS

完整代码

以下是实现鹰眼控件的完整代码:

<!--* @Author: 彭麒* @Date: 2024/12/7* @Email: 1062470959@qq.com* @Description: 此源码版权归吉檀迦俐所有,可供学习和借鉴或商用。-->
<template><button class="back-button" @click="goBack">返回</button><div class="container"><div class="w-full flex justify-center flex-wrap"><div class="font-bold text-[24px]">在Vue3中使用OpenLayers加载鹰眼控件示例教程</div></div><div id="vue-openlayers"></div></div>
</template><script setup>
import "ol/ol.css";
import {ref, onMounted} from "vue";
import {Map, View} from "ol";
import Tile from "ol/layer/Tile";
import {OSM} from "ol/source";
import * as control from "ol/control";
const map = ref(null);
import router from "@/router";
const goBack = () => {router.push('/OpenLayers');
};
const initMap = () => {map.value = new Map({target: "vue-openlayers",layers: [new Tile({source: new OSM(),}),],view: new View({projection: "EPSG:4326",center: [114.064839, 22.548857],zoom: 4,}),controls: control.defaults({zoom: false,doubleClickZoom: false,rotate: false,attribution: false,}).extend([new control.OverviewMap({collapsed: true,collapsible: true,rotateWithView: true,}),]),});
};onMounted(() => {initMap();
});</script><style scoped>
.container {width: 840px;height: 570px;margin: 50px auto;border: 1px solid #42B983;position: relative;
}#vue-openlayers {width: 800px;height: 400px;margin: 0 auto;border: 1px solid #42B983;
}</style>

代码讲解

核心功能实现
  1. 地图初始化
    使用 new Map 创建地图实例,绑定到 vue-openlayers 容器中。

    • 图层使用 OSM 提供的开源地图服务。
    • 视图设置为 EPSG:4326 坐标系,初始化中心点为深圳([114.064839, 22.548857])。
  2. 鹰眼控件
    使用 OpenLayers 提供的 OverviewMap 控件,在主地图上添加缩略图。

    • 设置 collapsed: true,表示默认折叠。
    • 启用 rotateWithView,确保缩略图与主地图同步旋转。
  3. Vue 3 Composition API

    • 通过 ref 定义响应式变量 map
    • 使用 onMounted 在组件挂载时初始化地图。

开发过程中的注意事项

  1. OpenLayers 版本问题
    本示例基于 OpenLayers 6+ 版本开发,请确保您的依赖是最新版本。

  2. 坐标系设置
    EPSG:4326 是 WGS84 地理坐标系,与标准经纬度一致。如果需要加载 Web Mercator 坐标系,请改为 EPSG:3857

  3. 控件扩展
    OpenLayers 提供了丰富的控件(如缩放、比例尺等),可通过 control.defaults() 进行自定义。


总结

通过本教程,您可以快速在 Vue 3 项目中实现带有鹰眼控件的地图应用。这不仅提升了用户体验,还为更复杂的 WebGIS 功能打下基础。希望本文能为您的项目开发带来帮助!

如果您对本文内容有任何疑问或建议,欢迎在评论区留言。
更多 WebGIS 相关内容,请持续关注我的博客!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink如何基于数据版本使用最新离线数据

业务场景 假设批量有一张商户表&#xff0c;表字段中有商户名称和商户分类两个字段。 批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。 原实现方案 a.原方案内容 为解决批量晚批问题&#xff0c;批量推送hbase表时一份数据产生两类rowkey&#xff1a;T-1和…

从GCC源码分析C语言编译原理——源码表层分析(脚本篇)

目录 一、目录结构 二、有意思的小功能 三、install脚本 脚本变量和设置 程序名称变量 模式和命令 参数解析 主要逻辑 四、主要功能脚本 ------------------------------------------------------------------------------------------------------------------------…

Latex转word(docx)或者说PDF转word 一个相对靠谱的方式

0. 前言 投文章过程中总会有各种各样的要求&#xff0c;其中提供word格式的手稿往往是令我头疼的一件事。尤其在多公式的文章中&#xff0c;其中公式转换是一个头疼的地方&#xff0c;还有很多图表&#xff0c;格式等等&#xff0c;想想就让人头疼欲裂。实践中摸索出一条相对靠…

挑战用React封装100个组件【010】

Hello&#xff0c;大家好&#xff0c;今天我挑战的组件是这样的&#xff01; 今天这个组件是一个打卡成功&#xff0c;或者获得徽章后的组件。点击按钮后&#xff0c;会弹出礼花。项目中的勋章是我通过AI生成的&#xff0c;还是很厉害的哈&#xff01;稍微抠图直接使用。最后面…

企业实践|广州新华学院携手泰迪智能科技开展大数据开发企业实践圆满结束

12月3日&#xff0c;新华学院健康学院携手广东泰迪智能科技股份有限公司联合开展大数据开发企业实践活动圆满结束&#xff0c;健康学院专业老师陈键聪及来自信息资源管理专业2023级24名学生参与此次活动结业仪式。泰迪智能科技董事长张良均、校企合作经理吴桂锋、钟秋平出席。 …

设计模式的艺术读书笔记

设计模式的艺术 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建的艺术创建型模式单例模式饿汉式单例与懒汉式单例的讨论通过静态内部类实现的更好办法 简单工厂模式 面向对象设计原则概述 单一职责原则 单一职责…

深度和法线纹理

屏幕后期处理效果的基本原理就是当游戏画面渲染完毕后通过获取到该画面的信息进行额外的效果处理 之前的边缘检测、高斯模糊、Bloom、运动模糊等效果都是基于获取当前屏幕图像中的像素信息进行后期处理的 如果仅仅根据像素信息来进行一些效果处理&#xff0c;存在以下问题&…

WPF编写工业相机镜头选型程序

该程序满足面阵和线阵的要求。 前端代码 <Window x:Class"相机镜头选型.MainWindow" Loaded"Window_Loaded"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml…

ORCA:基于持续批处理的LLM推理性能优化技术详解

大语言模型(LLMs)推理过程中的批处理优化面临显著挑战&#xff0c;这主要源于其推理过程的迭代特性。核心问题在于批处理中的各个请求完成时间存在差异&#xff0c;这导致资源释放和新请求整合的复杂性显著提高&#xff0c;特别是在处理不同完成阶段的请求时。当批处理中序列的…

pwndbg快速计算栈溢出大小

1.启动pwndbg 生成长度为300的字符串 2.把生成的字符串复制粘贴到 run之后的程序下 查看错误提示“Invalid address 0x62616164” 3.根据错误地址&#xff0c;查看溢出大小

C++_关于异常处理throw-try-catch

文章目录 作用1. 无异常捕获2. 有异常捕获 作用 简单说&#xff0c;异常处理机制主要作用是让程序能够继续执行&#xff0c;或者以一种可控的方式终止&#xff0c;而非让程序因为错误直接崩溃 一个简单的动态数组类&#xff0c;来看看有异常捕获和无异常捕获的区别 1. 无异常…

云原生基础设施指南:精通 Kubernetes 核心与高级用法

1. 云原生的诞生 随着互联网规模的不断增长&#xff0c;以及企业对敏捷开发、快速交付和高可用性的需求日益增强&#xff0c;传统的单体架构逐渐暴露出局限性&#xff0c;难以满足现代业务对动态扩展和高效迭代的要求。为此&#xff0c;云原生应运而生。 云原生是为云计算时代…

如何用python获取图像

方法一&#xff1a;利用PIL中的Image函数&#xff0c;这个函数读取出来不是array格式 这时候需要用 np.asarray(im) 或者 np.array()函数&#xff1b;区别&#xff1a;np.array() 是深拷贝&#xff0c;np.asarray() 是浅拷贝。 from PIL import Image import numpy as npI Im…

[机器学习] 监督学习之线性回归与逻辑回归

这里写目录标题 一、监督学习概述二、线性回归&#xff08;一&#xff09;模型表示&#xff08;二&#xff09;损失函数&#xff08;三&#xff09;梯度下降算法导入所需库生成模拟数据&#xff08;可替换为真实数据&#xff09;初始化参数并进行训练可视化损失函数随迭代次数的…

JavaScript柯里化和组合函数以及严格模式介绍

柯里化介绍 柯里化的结构 简化版本 让函数的职责单一 柯里化的复用 对某些逻辑进行复用 打印日志的柯里化 自动化柯里化函数 实现柯理化函数 1.柯里化函数是对函数进行处理的方法&#xff0c;所以参数就为一个函数&#xff0c;这里取名w为fn 2.定义一个函数curried&#xff0…

笔记04--零基础创建个人本地大模型知识库ollama+Dify

ollma安装 官网下载直接下一步下一步即可&#xff0c;没有魔法的朋友可以留言&#xff0c;文章中所用到的文件也给打包了&#xff0c;大家可以直接下载使用通过云盘下载使用。 链接: https://pan.baidu.com/s/12zF9MpQtg1bnMDAQayaSyg 提取码: n9rm 官网地址&#xff1a;http…

ACM:连数问题

任务内容 Description 设有n个正整数&#xff0c;将他们连接成一排&#xff0c;组成一个最大的多位整数。例如:n3 时&#xff0c;3个整数13,312,343,连成的最大整数为:34331213 又如:n4 时,4 个整数 7,13,4,246 连接成的最大整数为7424613 Input N N 个数 Output 连接成的多位数…

Element-ui el-tree 异步加载 懒加载 只能选择一个同级节点

需求 树的数据是通过异步(懒)加载而来&#xff0c;且要求同级节点只能选择一个&#xff0c;一个常见的应用场景是选择住址&#xff0c;选择了山东省不能同时选择河北省&#xff0c;选择了每个节点&#xff0c;显示完整的从根节点到本节点的路径 。 分析 Element-ui的el-tre…

【Linux文件管理】重定向内核级缓冲区用户级缓冲区

文章目录 文件管理文件描述符表&#xff08;files_struct&#xff09;重定向重定向概念 文件的内核级缓冲区和用户级缓冲区内核级缓冲区用户级缓冲区 总结 文件管理 文件描述符表&#xff08;files_struct&#xff09; 上一期我们将文件描述符讲完了&#xff0c;这期来讲讲文…

【H2O2|全栈】Node.js与MySQL连接

目录 前言 开篇语 准备工作 初始配置 创建连接池 操作数据库 封装方法 结束语 前言 开篇语 本节讲解如何使用Node.js实现与MySQL数据库的连接&#xff0c;并将该过程进行函数封装。 与基础部分的语法相比&#xff0c;ES6的语法进行了一些更加严谨的约束和优化&#…