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.xdnf.cn/news/36378.html

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

相关文章

安装certbot(ubuntu系统)

安装nginx 更新软件包列表 sudo apt update 更新软件包列表 sudo apt install nginx 更新软件包列表 sudo systemctl status nginx 注意&#xff1a;强烈推荐使用&#xff0c;系统直接安装nginx&#xff0c;&#xff08;不推荐使用docker安装nginx&#xff09;为后续更简单…

【C语言】C语言的变量和声明系统性讲解

声明和定义的概念 在C语言中&#xff0c;**声明&#xff08;Declaration&#xff09;和定义&#xff08;Definition&#xff09;**是两个重要的基础概念&#xff0c;它们都涉及到变量、函数、结构体等的使用&#xff0c;但功能和作用存在明显区别&#xff1a; 声明&#xff1a…

【Linux】文件的内核级缓冲区、重定向、用户级缓冲区(详解)

一.文件内核级缓冲区 在一个struct file内部还要有一个数据结构-----文件的内核级缓冲区 打开文件&#xff0c;为我们创建struct file&#xff0c;与该文件的所对应的操作表函数指针集合&#xff0c;还要提供一个文件的内核级缓冲区 1.write写入具体操作 当我们去对一个文件写…

MCU、ARM体系结构,单片机基础,单片机操作

计算机基础 计算机的组成 输入设备、输出设备、存储器、运算器、控制器 输入设备&#xff1a;将其他信号转换为计算机可以识别的信号&#xff08;电信号&#xff09;。输出设备&#xff1a;将电信号&#xff08;&#xff10;、&#xff11;&#xff09;转为人或其他设备能理解的…

JDK8新特性之Stream流01

Stream 流介绍 目标 了解集合的处理数据的弊端 理解Stream流的思想和作用 集合处理数据的弊端 当我们需要对集合中的元素进行操作的时候&#xff0c;除了必须的添加&#xff0c;删除&#xff0c;获取外&#xff0c;最典型的就是遍历集合。我们来体验集合操作的弊端&#xff…

【C++】—— map 与 multimap

【C】—— map 与 multimap 1 map1.1 map 和 multimap 参考文档1.2 map 类的介绍1.3 pair 类型介绍1.4 map的构造1.5 map的插入1.5.1 map 的插入方法1.5.2 验证1.5.3 再探pair1.5.4 make_pair 1.6 operator[]1.6.1 样例1.6.2 认识operator[]1.6.3 operator[] 的功能 1.7 map 的…

VTK知识学习(20)- 数据的存储与表达

1、数据的存储 1)、vtkDataArray VTK中的内存分配采用连续内存&#xff0c;可以快速地创建、删除和遍历&#xff0c;称之为数据数组(DataArray)&#xff0c;用类 vtkDataArray 实现。数组数据的访问是基于索引的&#xff0c;从零开始计数。 以 vtkFloatArray 类来说明如何在 …

HCIP-以太网交换安全

端口隔离&#xff1a;实现同一VLAN下的不同用户在二层不能互通&#xff08;可以实现在三层互通&#xff09;&#xff0c;同一个隔离组内是相互隔离的&#xff0c; MAC地址表功能&#xff1a;动态MAC地址表项&#xff0c;接口通告报文中的源MAC地址学习获得&#xff0c;表项可老…

电机功率、电压与电流的换算方法

在电气工程和相关行业中&#xff0c;电机的功率、电压和电流是三个重要的基本参数。它们之间有着密切的关系&#xff0c;而理解这些关系对于电机的选型、设计和应用至关重要。本文将详细阐述这三者之间的换算关系&#xff0c;以及相关公式的应用。 一、电机功率的定义 电机功…

【CKS最新模拟真题】获取多个集群的上下文名称并保存到指定文件中

文章目录 前言一、TASK二、解题过程1、问题一解题2、问题二解题 前言 月底考CKS,这是最新版的CKS模拟题 环境k8s版本ubuntu1.31 一、TASK 题目要求 Solve this question on: ssh cks3477 You have access to multiple clusters from your main terminal through contexts. …

智能合约的离线签名(EIP712协议)解决方案

一、解决核心问题 项目方不支付gas费&#xff0c;由用户自己发起交易&#xff0c;用户支付gas费。用户的数据保存在链下服务器中&#xff0c;token合约在链上&#xff0c;交易是由用户通过网页的DAPP发起。 后台服务、token合约、dapp如何配合工作是本方案的重点 二、总架构…

php:完整部署Grid++Report到php项目,并实现模板打印

一、下载Grid++Report软件 路径:开发者安装包下载 - 锐浪报表工具 二、 安装软件 1、对下载的压缩包运行内部的exe文件 2、选择语言 3、 完成安装引导 下一步即可 4、接收许可协议 点击“我接受” 5、选择安装路径 “浏览”选择安装路径,点击"安装" 6、完成…

SpringMvc完整知识点一

SpringMVC概述 定义 SpringMVC是一种基于Java实现MVC设计模型的轻量级Web框架 MVC设计模型&#xff1a;即将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。这种分离…

SpringBoot暴露Prometheus指标数据

一、Prometheus Prometheus是一个开源的服务监控系统和时序数据库&#xff0c;提供了通用的数据模型和快捷数据采集、存储和查询接口。其核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的目标中拉取数据&#xff0c;当新拉取到的数据大于配置的…

Hadoop生态圈框架部署 伪集群版(七)- Hive部署

文章目录 前言一、Hive部署&#xff08;手动部署&#xff09;1. 下载Hive2. 解压Hive安装包2.1 解压2.2 重命名2.3 解决冲突2.3.1 解决guava冲突2.3.2 解决SLF4J冲突 3. 配置Hive3.1 配置Hive环境变量3.2 修改 hive-site.xml 配置文件3.3 配置MySQL驱动包 4. 初始化MySQL上的存…

C++析构函数和构造函数

一、构造函数 1.构造函数的基本概念 1.对构造函数的理解&#xff1a; 构造函数是类的一种特殊成员函数&#xff0c;其主要功能是在创建对象时进行初始化操作。它的名字与类名相同&#xff0c;并且没有返回值类型&#xff08;不能是void&#xff09;。例如&#xff0c;对于一个…

Cherno C++学习笔记 P32 字符串

这篇文章我们来讲字符串。字符串可以说是最重要的变量类型了&#xff0c;因为对字符串的读写极大地影响到我们的程序和用户之间的交互。甚至很多很庞大的程序就只是在处理字符串。 对于字符串&#xff0c;我们同时需要有关于数组和指针的关系&#xff0c;字符串的实现与数组是…

linuxCNC(五)HAL驱动的指令介绍

HAL驱动的构成 指令举例详解 从终端进入到HAL命令行&#xff0c;执行halrun&#xff0c;即可进入halcmd命令行 # halrun指令描述oadrt加载comoonent&#xff0c;loadrt threads name1 period1创建新线程loadusr halmeter加载万用表UI界面loadusr halscope加载示波器UI界面sho…

在做题中学习(78):数组中第K个最大元素

解法&#xff1a;快速选择算法 说明&#xff1a;堆排序也是经典解决topK问题的算法&#xff0c;但时间复杂度为&#xff1a;O(NlogN) 而将要介绍的快速选择算法的时间复杂度为: O(N) 先看我的前两篇文章&#xff0c;分别学习&#xff1a;数组分三块&#xff0c;随机选择基准…

分布式事务的前世今生-纯理论

一个可用的复杂的系统总是从可用的简单系统进化而来。反过来这句话也正确: 从零开始设计的复杂的系统从来都用不了&#xff0c;也没办法让它变的可用。 --John Gal 《系统学》 1975 1. 事务的概念 百科&#xff1a; 事务&#xff08;Transaction&#xff09;&#xff0c;一般是…