14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

news2024/12/23 22:21:28

在 WebGIS 开发中,默认的地图服务通常会带有版权信息,但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中,我们将基于 Vue 3 的 Composition API 和 OpenLayers,完成自定义地图版权信息的实现。


最终效果

通过本文教程,您将实现以下功能:

  1. 在地图中自定义版权信息。
  2. 加载 OpenStreetMap 图层并设置版权声明的显示内容。
  3. 使用 Vue 3 的 Composition API 构建现代化的 WebGIS 应用。

准备工作

1. 安装依赖

确保您的项目已经安装了 Vue 3 和 OpenLayers:

npm install vue@next npm install ol

实现步骤

1. 创建自定义地图组件

以下是完整的 CustomAttributionMap.vue 代码:

<!--
 * @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 router from "@/router";
const goBack = () => {
    router.push('/OpenLayers');
};
const map = ref(null);

// 初始化地图
const initMap = () => {
    // 自定义版权信息
    let attributions =
        '<a href="" target="_blank">&copy; 个性化版权信息</a> ' +
        '<a href="https://blog.csdn.net/Miller777_?type=blog" target="_blank">&copy; 吉檀迦利博客</a>';

    // 创建地图实例
    map.value = new Map({
        target: "vue-openlayers",
        layers: [
            new Tile({
                source: new OSM({
                    attributions: attributions, // 自定义版权信息
                }),
            }),
        ],
        view: new View({
            projection: "EPSG:4326",
            center: [114.064839, 22.548857], // 地图中心点(深圳)
            zoom: 4, // 缩放级别
        }),
    });
};

// 在组件挂载后初始化地图
onMounted(() => {
    initMap();
});

</script>

<style scoped>
.container {
    width: 840px;
    height: 520px;
    margin: 0 auto;
    border: 1px solid #42B983;
}

#vue-openlayers {
    width: 800px;
    height: 400px;
    margin: 0 auto;
    border: 1px solid #42B983;
}
</style>

2. 在主入口文件加载组件

确保在项目主文件中正确挂载组件:

main.js

import { createApp } from "vue"; 
import App from "./App.vue"; 
createApp(App).mount("#app");

App.vue

<template> 
    <CustomAttributionMap /> 
</template> 
<script> 
import CustomAttributionMap from "./components/CustomAttributionMap.vue"; 
export default { 
    components: { CustomAttributionMap, }, 
}; 
</script>

效果截图

以下是代码运行后的效果截图:


地图加载并显示自定义版权信息


开发注意事项

  1. OpenLayers 版本兼容性
    本文基于 OpenLayers 最新版本开发,请确保安装的 ol 版本为 6.0+。

  2. 版权信息的合法性
    如果您需要修改默认版权信息,请确保符合地图服务的使用条款(例如 OpenStreetMap 的使用规则)。

  3. 扩展自定义功能
    除了自定义版权信息,您还可以修改其他控件或添加新的交互功能。


总结

通过本文教程,您学会了在 Vue 3 中使用 OpenLayers 自定义地图版权信息的基本方法。这种方式不仅可以满足项目的个性化需求,还能帮助提升地图展示的专业性。

如果您在使用中遇到问题,欢迎在评论区留言。
更多 Vue 和 OpenLayers 相关内容,请持续关注我的博客!


点赞、收藏、关注是对我最大的支持! 😊

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

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

相关文章

详解下c语言中的typedef

相信学习过c语言的很多同学都对typedef很陌生&#xff0c;感觉它离自己很遥远&#xff0c;自己很少用到。但实际上&#xff0c;我们看很多地方&#xff0c;包括很多大神级别的代码中&#xff0c;它却又经常使用。今天我们就详细描述下它&#xff0c;使我们对它有一个更深的认识…

19. Three.js案例-创建一个带有纹理映射的旋转平面

19. Three.js案例-创建一个带有纹理映射的旋转平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它利用 WebGL 技术在浏览器中绘制 3D 图形。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobj…

Ensemble Learning via Knowledge Transfer for CTR Prediction 论文阅读

Abstract:点击率&#xff08;CTR&#xff09;预测在推荐系统和网络搜索中起着关键作用。虽然许多现有的方法利用集成学习来提高模型性能&#xff0c;但它们通常将集成限制在两个或三个子网络中&#xff0c;很少探索更大的集成。在本文中&#xff0c;我们研究了更大的集成网络&a…

苍穹外卖项目练习总结

做这个练习项目已经接近两年之久&#xff0c;现在拿出来复习一遍&#xff0c;主要就是里面处理问题的流程&#xff0c;以及整体思考的逻辑需要重新回顾一遍&#xff0c;后续会逐渐总结这一段时间以来学习到的知识。 项目整体包含两部分&#xff0c;一个是管理端&#xff0c;一…

数学拯救世界(三)———破魔

题目一&#xff1a; 还记不记得&#xff0c;出现带分数的话可以怎么办&#xff1f; 题目二&#xff1a; 还记不记得&#xff0c;昨天讲的重叠数 题目三&#xff1a; 提公因数&#xff0c;抓住问题本质 题目四&#xff1a;

JAVA |日常开发中连接Sqlite数据库详解

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

对 JavaScript 说“不”

JavaScript编程语言历史悠久&#xff0c;但它是在 1995 年大约一周内创建的。 它最初被称为 LiveScript&#xff0c;但后来更名为 JavaScript&#xff0c;以赶上 Java 的潮流&#xff0c;尽管它与 Java 毫无关系。 它很快就变得非常流行&#xff0c;推动了 Web 应用程序革命&…

解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

解谜类游戏以精妙的谜题设计和引人入胜的故事叙述为特点&#xff0c;考验着玩家的智慧与观察力。《迷失岛2》与《南瓜先生2九龙城寨》正是这一领域的佳作。游戏以独特的艺术风格和玩法设计吸引了大量玩家&#xff0c;而它们背后隐藏着一套强大的框架。 上海胖布丁游戏的技术总…

CID引流电商

ClickID技术是基于多家媒体平台开发的电商引流服务&#xff0c;通过媒体提供的宏参数&#xff0c;间接解决电商平台订单数据的回传问题&#xff0c;帮助账户收集到极致精准的数据模型&#xff0c;搭建不同媒体往各平台引流的桥梁。简单来说就是通过ClickID数据监测到另外一个平…

保姆级教程Docker部署Redis镜像

目录 1、创建挂载目录和配置文件 2、运行Redis镜像 3、查看redis运行状态 1、创建挂载目录和配置文件 # 创建宿主机Redis配置文件存放目录 sudo mkdir -p /data/docker/redis/conf# 创建Redis配置文件 cd /data/docker/redis/conf sudo touch redis.conf 到Github上找到Redi…

如何将快捷指令添加到启动台

如何将快捷指令添加到启动台/Finder/访达&#xff08;Mac&#xff09; 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角&#xff0c;对Mamba 进行了阐释。 论文名称&#xff1a;Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址&#xff1a;https://arxiv.org/pdf/24…

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML&#xff08;三&#xff09;Bootstrap5列表组全解析 前言&#xff08;一&#xff09;HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

【CSP CCF记录】202212-2第28次认证 训练计划

题目 样例1输入 10 5 0 0 0 0 0 1 2 3 2 10 样例1输出 1 1 1 1 1 10 9 8 9 1 样例1解释 五项科目间没有依赖关系&#xff0c;都可以从第 1 天就开始训练。 10天时间恰好可以完成所有科目的训练。其中科目 1 耗时仅 1天&#xff0c;所以最晚可以拖延到第 10 天再开始训练&…

java 18 异常处理

一&#xff0c;异常概念 基本概念Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类&#xff1a; 1&#xff09;Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部…

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作&#xff1a;将相同键的所有值收集到一个集合中。实现&#xff1a;不会在map端进行局部聚合&#xff0c;而是直接将所有相同键的数据传输到reduce端进行聚合。缺点&#xff1a;由于没有本地聚合&#xff0c;groupByKey会导致大量的数据传输和shuffle&#xff0c…

房屋租赁系统源码 SpringBoot + Vue 实现全功能解析

这是一套使用 SpringBoot 与 Vue 开发的房屋租赁系统源码&#xff0c;站长分析过这套源码&#xff0c; 推测其原始版本可能是一个员工管理系统&#xff0c;经过二次开发后&#xff0c;功能被拓展和调整&#xff0c;现已完全适用于房屋租赁业务。 该系统功能完善&#xff0c;涉…

【ArcGISPro】训练自己的深度学习模型并使用

本教程主要训练的是识别汽车的对象检测模型 所使用的工具如下(导出训练数据进行深度学习、训练深度学习模型、使用深度学习检测对象) 1.准备训练数据 1.1新建面矢量,构建检测对象 右键地理数据库->新建->要素类 选择面类型 1.2点击编辑窗口进行勾画汽车检测对象…

鸿蒙特色实战3共享单车案例

1 案例截图 2 开发准备 本项目需要一台NEXT真机&#xff0c;并完成以下准备工作。 在AppGallery Connect&#xff08;简称AGC&#xff09;上&#xff0c;参考创建项目和创建应用完成HarmonyOS应用的创建&#xff0c;从而使用各类服务。 添加应用包名要注意&#xff1a;与新建…