当前位置: 首页 > news >正文

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.mrgr.cn/news/79510.html

相关文章:

  • VB.net进行CAD二次开发(二)与cad交互
  • QT 中 线程池 (备查)
  • uniapp的多列选择器
  • 通讯基础 -- 嵌入式Linux ZeroMQ 使用笔记
  • 高阶数据结构--B树B+树实现原理B树模拟实现--Java
  • 【开源】基于SpringBoot框架的音乐网站与分享平台(计算机毕业设计)+万字说明文档 T011
  • 18.[极客大挑战 2019]BabySQL1
  • 书后习题答案:《Python程序设计基础(第2版)》,电子工业出版社,2020.01
  • SpringBoot自动配置底层核心源码
  • 电子商务人工智能指南 2/6 - 需求预测和库存管理
  • 【开源】A064—基于JAVA的民族婚纱预定系统的设计与实现
  • FastAPI解决跨域报错net::ERR_FAILED 200 (OK)
  • 木棍的长度
  • (七)腾讯cloudstudio+Stable-Diffusion-webui AI绘画教程-安装Stable-Diffusion-WebUI
  • 结合Spring Security的两种用户登陆认证以及授权方案
  • Linux下mysql环境的搭建
  • React第十三节开发中常见问题之(视图更新、事件处理)
  • Python3 报错 <urlopen error unknown url type: https>
  • 容器镜像仓库
  • 【UE5】制作插件 并调试【vs2022】
  • vue vxe-table 实现财务记账凭证并打印
  • 音视频入门基础:MPEG2-TS专题(13)——FFmpeg源码中,解析Section Header的实现
  • 【git reset】本地下载特定历史提交哈希值的github文件【未联网服务器】进行git reset操作
  • 编码器:提取语义特征,上下文信息;解码器:生成目标语言;每个单词的词经过编码器后的编码就包括上下文信息
  • MODBUS POll使用简介
  • 使用docker安装jenkins