mapbox添加自定义图片绑定点击事件,弹窗为自定义组件
一、首先构建根据后端返回的数据构建geojson格式的数据,点位的geojson数据格式:
{"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [117.1625,36.7074]},"properties": {"proIndex": 0}},{"type": "Feature","geometry": {"type": "Point","coordinates": [117.1701,36.6923]},"properties": {"proIndex": 1}},{"type": "Feature","geometry": {"type": "Point","coordinates": [117.17,36.6927]},"properties": {"proIndex": 2}},{"type": "Feature","geometry": {"type": "Point","coordinates": [117.1701,36.6916]},"properties": {"proIndex": 3}},{"type": "Feature","geometry": {"type": "Point","coordinates": [117.1445,36.6852]},"properties": {"proIndex": 4}}]
}
二、如果需要设置自定义图片作为点位,则要调用loadImage方法加载图片。
map.loadImage(imageUrl, function (error, image) {if (error) throw error;if (!map.hasImage('custom-marker')) { map.addImage('custom-marker', image);}map.addSource('geojson-source', {type: 'geojson',data: pointGeojsonData});map.addLayer({id: 'custom-marker-layer',type: 'symbol',source: 'geojson-source',layout: {'icon-image': 'custom-marker','icon-size': 0.1}});map.on('click', 'custom-marker-layer', function (e) {// console.log(e.features,'eeeeeeeeeeeeeeeeeeeee')// var features = map.queryRenderedFeatures(e.lnglat, { layers: ['custom-marker-layer'] });// if (!features.length) return;var feature = e.features[0];console.log(feature, 'feature')// 创建一个新的弹窗let p = Vue.extend(TestPopup);let vm = new p({propsData: {obj:feature.properties}})vm.$mount();var popup = new mapboxgl.Popup({offset: [0, -15],// closeButton: false,// closeOnClick: false})popup.setLngLat(feature.geometry.coordinates)popup.setDOMContent(vm.$el).addTo(map)})});
map.loadImage(imageUrl, function (error, image) { ... });- 这行代码使用
map.loadImage方法异步加载一个图像。imageUrl是图像的URL。加载完成后,回调函数会被调用,参数error如果有值表示加载出错,image是加载成功的图像对象。
- 这行代码使用
if (error) throw error;- 如果加载图像时出错,抛出错误。
if (!map.hasImage('custom-marker')) { map.addImage('custom-marker', image); }- 检查地图上是否已经存在一个名为
custom-marker的图像。如果不存在,则使用map.addImage方法添加这个图像。
- 检查地图上是否已经存在一个名为
map.addSource('geojson-source', { type: 'geojson', data: pointGeojsonData });- 向地图添加一个GeoJSON数据源。
geojson-source是数据源的ID,type: 'geojson'指定了数据源的类型,data: pointGeojsonData是包含GeoJSON数据的变量。
- 向地图添加一个GeoJSON数据源。
map.addLayer({ ... });- 在地图上添加一个图层。这个图层使用之前添加的GeoJSON数据源,并将自定义图标
custom-marker作为图层的图标。图层的ID是custom-marker-layer,类型是symbol,它指定了图标的尺寸等布局属性。
- 在地图上添加一个图层。这个图层使用之前添加的GeoJSON数据源,并将自定义图标
map.on('click', 'custom-marker-layer', function (e) { ... });- 为
custom-marker-layer图层添加一个点击事件监听器。当用户点击这个图层上的点时,会触发回调函数。
- 为
var feature = e.features[0];- 从事件对象
e中获取被点击的特征(feature)。e.features是一个数组,包含所有在点击位置被渲染的特征。这里只取第一个特征。
- 从事件对象
console.log(feature, 'feature')- 在控制台打印被点击的特征。
- 接下来的几行代码使用Vue.js创建一个新的组件实例,并将其内容设置为Mapbox弹窗的内容。
let p = Vue.extend(TestPopup);使用Vue的extend方法创建一个TestPopup组件的构造器。let vm = new p({ propsData: { obj: feature.properties } });创建一个新的Vue实例,将点击的特征的属性作为props传递给TestPopup组件。vm.$mount();手动挂载Vue实例。
var popup = new mapboxgl.Popup({ ... });- 创建一个新的Mapbox弹窗实例,并设置一些选项,如偏移量和是否显示关闭按钮。
popup.setLngLat(feature.geometry.coordinates)- 设置弹窗的位置为被点击特征的地理坐标。
popup.setDOMContent(vm.$el).addTo(map)- 将Vue实例的DOM元素设置为弹窗的内容,并将弹窗添加到地图上
三、在App.vue中设置取消mapbox默认的弹窗样式
.mapboxgl-popup-tip {display: none;
}
.mapboxgl-popup-content {padding:0;
}
四、弹窗组件通过props接收传过来的属性的值。

组件成功弹窗!

相关文章:
mapbox添加自定义图片绑定点击事件,弹窗为自定义组件
一、首先构建根据后端返回的数据构建geojson格式的数据,点位的geojson数据格式: {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "…...
SVT-AV1接入ffmpeg说明
一 编译集成 Files v2.3.0 Alliance for Open Media / SVT-AV1 GitLab cd /SVT-AV1/Build/linux/ ./build.sh make install GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git ./configure --enable-libsvtav1 --enable-gpl --extra-ldflags-L/usr/loca…...
基于 C++ Qt 的 Fluent Design 组件库 QFluentWidgets
简介 QFluentWidgets 是一个基于 Qt 的 Fluent Designer 组件库,内置超过 150 个开箱即用的 Fluent Designer 组件,支持亮暗主题无缝切换和自定义主题色。 编译示例 以 Qt5 为例(Qt6 也支持),将 libQFluentWidgets.d…...
OpenCV(6):图像边缘检测
图像边缘检测是计算机视觉和图像处理中的一项基本任务,它用于识别图像中亮度变化明显的区域,这些区域通常对应于物体的边界。是 OpenCV 中常用的边缘检测函数及其说明: 函数算法说明适用场景cv2.Canny()Canny 边缘检测多阶段算法,检测效果较…...
多模态人物视频驱动技术回顾与业务应用
一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力,能够从供给端缓解内容生产成本高的问题,通过源源不断的低成本供给倒推…...
星海智算+ DeepSeek-R1:技术突破与行业应用的协同革新
一、前言 在当今数字化时代,人工智能(AI)正以前所未有的速度改变着商业和社会的方方面面。最近爆火的DeepSeek-R1系列模型,以其强大的推理能力和在中文的推理、代码和数学任务高效的性能得到了全球用户的热议。该模型不仅在多项专…...
选择排序:简单高效的选择
大家好,今天我们来聊聊选择排序(Selection Sort)算法。这是一个非常简单的排序算法,适合用来学习排序的基本思路和操作。选择排序在许多排序算法中以其直观和易于实现的特点著称,虽然它的效率不如其他高效算法…...
考研/保研复试英语问答题库(华工建院)
华南理工大学建筑学院保研/考研 英语复试题库,由华工保研er和学硕笔试第一同学一起整理,覆盖面广,助力考研/保研上岸!需要👇载可到文章末尾见小🍠。 以下是主要内容: Part0 复试英语的方法论 Pa…...
ARM Cortex-M处理器中的MSP和PSP
在ARM Cortex-M系列处理器中,MSP(主堆栈指针)和PSP(进程堆栈指针)是两种不同的堆栈指针,主要用于实现堆栈隔离和提升系统可靠性。以下是它们的核心区别和应用场景: 1. 基本定义 MSP(…...
《Keras 3 使用 NeRF 进行 3D 体积渲染》:此文为AI自动翻译
《Keras 3 使用 NeRF 进行 3D 体积渲染》 作者: Aritra Roy Gosthipaty, Ritwik Raha 创建日期: 2021/08/09 最后修改时间: 2023/11/13 描述: 体积渲染的最小实现,如 NeRF 中所示。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介绍 在此示例中,我们展示了…...
Pytorch实现之浑浊水下图像增强
简介 简介:这也是一篇非常适合GAN小白们上手的架构文章!提出了一种基于GAN的水下图像增强网络。这种网络与其他架构类似,生成器是卷积+激活函数+归一化+残差结构的组成,鉴别器是卷积+激活函数+归一化以及全连接层。损失函数是常用的均方误差、感知损失和对抗损失三部分。 …...
【redis】数据类型之Bitfields
Redis的Bitfields(位域)与Bitmaps一样,在Redis中并不是一种独立的数据类型,而是一种基于字符串的数据结构,用于处理位级别的操作。允许用户将一个Redis字符串视作由一系列二进制位组成的数组,并对这些位进行…...
Python入门 — 类
面向对象编程中,编写表示现实世界中的事物和情景的类(class),并基于这些类来创建对象(object)。根据类来创建对象称为实例化,这样就可以使用类的实例(instance) 一、创建…...
R-INLA实现绿地与狐狸寄生虫数据空间建模:含BYM、SPDE模型及PC先验应用可视化...
全文链接:https://tecdat.cn/?p40720 本论文旨在为对空间建模感兴趣的研究人员客户提供使用R-INLA进行空间数据建模的基础教程。通过对区域数据和地统计(标记点)数据的分析,介绍了如何拟合简单模型、构建和运行更复杂的空间模型&…...
Linux云计算SRE-第十五周
1.总结Dockerfile的指令和Docker的网络模式 一、Dockerfile 核心指令详解 1、基础构建指令 指令 功能描述 关键特性 FROM 指定基础镜像(必须为首条指令) - 支持多阶段构建:FROM node AS builder - scratch 表示空镜像 RUN 在镜像构建…...
2014年下半年试题一:论软件需求管理
论文库链接:系统架构设计师论文 论文题目 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互关联,初始需求导出的同时就要形成需求管理规划,一旦启动了软件开发过程需求管理活动就紧密相伴。 需求管理过程中…...
podman加速器配置,harbor镜像仓库部署
Docker加速器 registries加速器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Stream release 8 [rootlocalhost ~]# cd /etc/containers/ [rootlocalhost containers]# ls certs.d policy.json registries.conf.d storage.conf oci registries.conf re…...
信息学奥赛一本通 1522:网络 | OpenJudge 百练 1144:Network
【题目链接】 ybt 1522:网络 OpenJudge 百练 1144:Network 【题目考点】 1. 图论:割点 【解题思路】 每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。 初始时任何地…...
本地部署DeepSeek的硬件配置建议
本地部署DeepSeek的硬件配置需求因模型参数规模和部署工具不同而有所差异,以下是综合多个来源的详细要求: 1. 基础配置(适用于7B参数模型) 内存:最低8GB,推荐16GB及以上;若使用Ollama工具&…...
Redis面试题----Redis 的持久化机制是什么?各自的优缺点?
Redis 提供了两种主要的持久化机制,分别是 RDB(Redis Database)和 AOF(Append Only File),下面将详细介绍它们的原理、优缺点。 RDB(Redis Database) 原理 RDB 持久化是将 Redis 在某个时间点上的数据集快照以二进制文件的形式保存到磁盘上。可以通过手动执行 SAVE …...
基于GEE与MODIS/006/MCD64A1的长时间序列林火动态监测与空间格局分析
1. 从零开始理解GEE与MODIS火点监测 第一次接触Google Earth Engine(GEE)平台时,我被它强大的云端计算能力震撼到了。这个由谷歌开发的免费平台,让普通研究者也能处理PB级的地理空间数据。而MODIS/006/MCD64A1数据集,就…...
【通信】基于SDR的物理层设计与残相误差校正新方案附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
【AIAgent安全架构黄金法则】:20年专家首曝3大权限失控漏洞与7层防御落地指南
第一章:AIAgent架构安全边界与权限控制 2026奇点智能技术大会(https://ml-summit.org) AI Agent 系统在生产环境中运行时,其执行链路天然跨越模型推理、工具调用、外部API访问、状态存储与用户交互等多个信任域。若缺乏明确的安全边界划分与细粒度权限控…...
终极免费方案:Apple Silicon Mac电池寿命延长50%的完整指南
终极免费方案:Apple Silicon Mac电池寿命延长50%的完整指南 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit 你是否在为Mac电池续航不断下降而…...
Battery Toolkit 终极指南:如何让 Apple Silicon Mac 电池寿命延长 50%
Battery Toolkit 终极指南:如何让 Apple Silicon Mac 电池寿命延长 50% 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit Battery Toolkit 是一…...
ESP32锂电池电量检测实战:从引脚选择到低功耗优化(附完整电路图)
ESP32锂电池电量检测实战:从引脚选择到低功耗优化 在物联网设备开发中,锂电池供电方案的设计往往决定了产品的续航能力和用户体验。ESP32作为一款集成了Wi-Fi和蓝牙功能的低功耗芯片,其电池电量检测功能却常常让开发者陷入困境——ADC通道与W…...
Illustrator脚本合集:10个免费工具让你的设计效率翻倍
Illustrator脚本合集:10个免费工具让你的设计效率翻倍 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否厌倦了在Adobe Illustrator中重复执行繁琐的操作࿱…...
微信聊天记录永久保存终极指南:如何一键导出并生成个性化年度报告?
微信聊天记录永久保存终极指南:如何一键导出并生成个性化年度报告? 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/G…...
终极网盘不限速指南:八大平台直链下载工具完整教程
终极网盘不限速指南:八大平台直链下载工具完整教程 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...
嘉立创EDA PCB设计中的高效对齐与等间距技巧
1. 嘉立创EDA对齐功能深度解析 第一次用嘉立创EDA做PCB设计时,最让我惊喜的就是它的对齐功能。相比其他EDA软件需要反复调整网格对齐,这里只需要选中元件就能一键对齐。记得当时画一个LED阵列板,20多个LED灯珠手动调整位置花了我半小时&#…...
