openlayers [九] 地图覆盖物overlay三种常用用法 popup弹窗,marker标注,text文本
文章目录
- 简介
- overlay 实现popup弹窗
- overlay 实现label 标注信息
- overlay实现 text 文本信息
- 完整代码
简介
常见的地图覆盖物为这三种类型,如:popup弹窗、label标注信息、text文本信息等。
overlay 实现popup弹窗
方法详解
- 实例一个 new Overlay(),设置相关的属性,element 是和页面的 最外层弹窗的dom进行绑定
- 通过 map.addOverlay(this.overlay) 把 overlay弹窗添加到页面
- closer.onclick 添加一个 x 关闭弹窗事件
- 通过 this.map.on(“singleclick”, function(evt) 事件点击地图触发弹窗效果

overlay 实现label 标注信息
// 创建一个标注信息
const addMarker = () => {var marker = new Overlay({position: fromLonLat([104.043505, 30.58165]),positioning: 'center-center',element: document.getElementById('marker'),stopEvent: false,});map.value.addOverlay(marker);
};

overlay实现 text 文本信息
// 创建文字标签 label
const addText = () => {var textInfo = new Overlay({position: fromLonLat([104.043505, 30.58165]),offset: [20, -20],element: document.getElementById('textInfo'),});map.value.addOverlay(textInfo);
};
完整代码
<!--* @Author: zhangchao zhang_chao96@163.com* @Date: 2023-07-05 15:20:38* @LastEditors: zhangchao zhang_chao96@163.com* @LastEditTime: 2023-07-06 15:46:16* @FilePath: \v3_test\src\views\index.vue* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template><div id="content"><div id="marker"></div><div id="map"></div><div id="textInfo">我是text文本信息</div><div id="popup" class="ol-popup"><a href="#" id="popup-closer" class="ol-popup-closer"></a><div id="popup-content" class="popup-content"></div></div></div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import 'ol/ol.css';
import { Map, View } from 'ol';
import { defaults as defaultControls } from 'ol/control';
import Tile from 'ol/layer/Tile';
import { fromLonLat, transform, toLonLat } from 'ol/proj';
import OSM from 'ol/source/OSM';
import Overlay from 'ol/Overlay';
import { toStringHDMS } from 'ol/coordinate';
const map = ref();
const initMap = () => {let titleLayer = [new Tile({source: new OSM(),}),];let view = new View({center: fromLonLat([104.912777, 34.730746]), //地图中心坐标zoom: 4.5,});map.value = new Map({target: 'map',layers: titleLayer,view: view,});
};
// 创建一个标注信息
const addMarker = () => {var marker = new Overlay({position: fromLonLat([104.043505, 30.58165]),positioning: 'center-center',element: document.getElementById('marker'),stopEvent: false,});map.value.addOverlay(marker);
};
// 创建文字标签 label
const addText = () => {var textInfo = new Overlay({position: fromLonLat([104.043505, 30.58165]),offset: [20, -20],element: document.getElementById('textInfo'),});map.value.addOverlay(textInfo);
};
// 弹框
const overlay = ref();
const addPopup = () => {// 使用变量存储弹窗所需的 DOM 对象var container = document.getElementById('popup');var closer = document.getElementById('popup-closer');var content = document.getElementById('popup-content');overlay.value = new Overlay({element: container, //绑定 Overlay 对象和 DOM 对象的autoPan: false, // 定义弹出窗口在边缘点击时候可能不完整 设置自动平移效果autoPanAnimation: {duration: 250, //自动平移效果的动画时间 9毫秒)},});map.value.addOverlay(overlay.value);closer.onclick = function () {overlay.value.setPosition(undefined);closer.blur();return false;};map.value.on('singleclick', function (evt) {let coordinate = transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');// 点击尺 (这里是尺(米),并不是经纬度);let hdms = toStringHDMS(toLonLat(evt.coordinate)); // 转换为经纬度显示content.innerHTML = `<p>你点击了这里:</p><p>经纬度:<p><code> ${hdms} </code> <p><p>坐标:</p>X:${coordinate[0]} Y: ${coordinate[1]}`;overlay.value.setPosition(evt.coordinate); //把 overlay 显示到指定的 x,y坐标});
};
onMounted(() => {initMap();addMarker();addText();addPopup();
});
</script>
<style lang="scss" scoped>
#content,
#map {height: 100%;
}
#marker {width: 20px;height: 20px;background: red;border-radius: 50%;
}
#textInfo {width: 200px;height: 40px;line-height: 40px;background: burlywood;color: yellow;text-align: center;font-size: 20px;
}.ol-popup {position: absolute;background-color: white;-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));padding: 15px;border-radius: 10px;border: 1px solid #cccccc;bottom: 12px;left: -50px;
}
.ol-popup:after,
.ol-popup:before {top: 100%;border: solid transparent;content: ' ';height: 0;width: 0;position: absolute;pointer-events: none;
}
.ol-popup:after {border-top-color: white;border-width: 10px;left: 48px;margin-left: -10px;
}
.ol-popup:before {border-top-color: #cccccc;border-width: 11px;left: 48px;margin-left: -11px;
}
.ol-popup-closer {text-decoration: none;position: absolute;top: 2px;right: 8px;
}
.popup-content {width: 400px;
}
.ol-popup-closer:after {content: '✖';
}
</style>相关文章:
openlayers [九] 地图覆盖物overlay三种常用用法 popup弹窗,marker标注,text文本
文章目录 简介overlay 实现popup弹窗overlay 实现label 标注信息overlay实现 text 文本信息完整代码 简介 常见的地图覆盖物为这三种类型,如:popup弹窗、label标注信息、text文本信息等。 overlay 实现popup弹窗 方法详解 实例一个 new Overlay()&…...
rabbitmq-java基础详解
一、rabbitmq是什么? 1、MQ定义 MQ(Message Queue)消息队列 主要解决:异步处理、应用解耦、流量削峰等问题,是分布式系统的重要组件,从而实现高性能,高可用,可伸缩和最终一致性的架…...
openssl3.2 - 官方demo学习 - smime - smsign.c
文章目录 openssl3.2 - 官方demo学习 - smime - smsign.c概述笔记END openssl3.2 - 官方demo学习 - smime - smsign.c 概述 从证书中得到X509*和私钥指针 用证书和私钥对铭文进行签名, 得到签名后的pkcs7指针 将pkcs7指向的bio_in, 写为MIME格式的签名密文 BIO_reset() 可以…...
Klocwork—符合功能安全要求的自动化静态测试工具
产品概述 Klocwork是Perforce公司产品,主要用于C、C、C#、Java、 python和Kotlin代码的自动化静态分析工作,可以提供编码规则检查、代码质量度量、测试结果管理等功能。Klocwork可以扩展到大多数规模的项目,与大型复杂环境、各种开发工具集成…...
运筹说 第56期 | 整数规划的数学模型割平面法
前几章讨论过的线性规划问题的一个共同特点是:最优解的取值可以是分数或者小数。然而,在许多实际问题中,决策者要求最优解必须是整数,例如公交车的车辆数、员工的人数、机器的台数、产品的件数等。那么,我们能否将得到…...
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
文章目录 一、v-model是什么二、什么是语法糖三、v-model常见的用法1、对于输入框(input):2、对于复选框(checkbox):3、对于选择框(select):4、对于组件(comp…...
大模型推理引擎面试复习大纲
Transformer原理 基本组成、注意力机制含义 transformer有哪些模块,各个模块有什么作用? transformer的模块可以分为以下几类: Encoder模块:transformer的编码器,它由多个相同的encoder层堆叠而成,每个enc…...
网络安全 | 苹果承认 GPU 安全漏洞存在,iPhone 12、M2 MacBook Air 等受影响
1 月 17 日消息,苹果公司确认了近期出现的有关 Apple GPU 存在安全漏洞的报告,并承认 iPhone 12 和 M2 MacBook Air 受影响。 该漏洞可能使攻击者窃取由芯片处理的数据,包括与 ChatGPT 的对话内容等隐私信息。 安全研究人员发现,…...
C++ 数论相关题目(约数)
1、试除法求约数 主要还是可以成对的求约数进行优化,不然会超时。 时间复杂度根号n #include <iostream> #include <vector> #include <algorithm>using namespace std;int n;vector<int> solve(int a) {vector<int> res;for(int i…...
freeswitch on centos dockerfile模式
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式。 环境 docker engine:Version 24.0.6 centos docker:7 freeswitch:v1.6.20 dockerfile 创建空目录…...
Hologres + Flink 流式湖仓建设
Hologres + Flink 流式湖仓建设 1 Flink + Hologres 特性1.2 实时维表 Lookup1.3 高性能实时写入与更新1.4 多流合并1.5 Hologres 作为 Flink 的数据源1.6 元数据自动发现与更新2 传统实时数仓分层方案2.1传统实时数仓分层方案 1:流式 ETL2.2 传统实时数仓分层方案 2:定时调度…...
Linux粘滞位的理解,什么是粘滞位?
文章目录 前言如何理解?粘滞位的操作最后总结一下 前言 粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root…...
Stable Diffusion的结构要被淘汰了吗?详细解读谷歌最新大杀器VideoPoet
Diffusion Models视频生成-博客汇总 前言:视频生成领域长期被Stable Diffusion统治,大部分的方式都是在预训练的图片Stable Diffusion的基础上加入时间层,学习动态信息。虽然有CoDi《【NeurIPS 2023】多模态联合视频生成大模型CoDi》等模型尝试过突破这一结构的局限,但是都…...
深度学习与大数据推动下的自然语言处理革命
引言: 在当今数字化时代,深度学习和大数据技术的迅猛发展为自然语言处理(Natural Language Processing, NLP)领域注入了新的活力。这些技术的进步不仅推动了计算机对人类语言理解与生成的能力,也在搜索引擎、语音助手、…...
产品经理必备之最强管理项目过程工具----禅道
目录 一.禅道的下载安装 二.禅道的使用 2.1 创建用户 2.2 产品经理的角色 2.3 项目经理的角色 研发的角色 2.4 测试主管的角色 研发角色 三.禅道使用的泳道图 一.禅道的下载安装 官网:项目管理软件 开源项目管理软件 免费项目管理软件 IPD管理软件 - 禅…...
美易官方:贝莱德预计美联储将在6月份开始降息,欧洲央行紧随其后
正文: 根据贝莱德的最新预测,美联储将在6月份开始降息,这一消息早于欧洲央行的预期。贝莱德高级投资策略师Laura Cooper表示:“我们更倾向于6月份降息、然后重新校准政策。”预计美联储在年底前将会降息75至100个基点。 与此同时…...
视觉检测系统:工厂生产零部件的智能检测
在工厂的生产加工过程中,工业视觉检测系统被广泛应用,并且起着重要的作用。它能够对不同的零部件进行多功能的视觉检测,包括尺寸和外观的缺陷。随着制造业市场竞争越来越激烈,对产品质检效率的要求不断提高,传统的人工…...
Spring事务的四大特性+事务的传播机制+隔离机制
Spring事务的四大特性 ① 原子性 atomicity 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 事务是一个原子操作, 由一系列动作组成。 组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有的…...
基于arcgis js api 4.x开发点聚合效果
一、代码 <html> <head><meta charset"utf-8" /><meta name"viewport"content"initial-scale1,maximum-scale1,user-scalableno" /><title>Build a custom layer view using deck.gl | Sample | ArcGIS API fo…...
什么是DDOS高防ip?DDOS高防ip是怎么防护攻击的
随着互联网的快速发展,网络安全问题日益突出,DDoS攻击和CC攻击等网络威胁对企业和网站的正常运营造成了巨大的威胁。为了解决这些问题,高防IP作为一种网络安全服务应运而生。高防IP通过实时监测和分析流量,识别和拦截恶意流量&…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
