基于leaflet地图实现点击点位图标,在图标边上展示信息弹窗的方案

news2024/10/6 18:28:17

文章标题很直观明显了,所以正文就直入主题。

leaflet组件其实很友好了,基本上能解决大部分网页端地图的大部分常用需求。

现在,要实现点击点位图标,在图标边上展示信息弹窗这个需求。提供两个思路:

1. 利用leaflet自带的popup类。

2. 展示完全自定义的弹窗组件。

先说方案一:

点打点,然后获取到marker对象。

然后利用L.popup()方法,构造一个popup弹窗,代码如下:

marker.on('click', data => {
   L.popup()
   .setLatLng(data.latlng) // 设置弹窗出现的位置为点击的经纬度
   .setContent('测试') // 设置弹窗的内容为相关信息
   .openOn(this.mapObj) // 在地图上打开弹                
})

很简单吧,这样就直接将弹窗绑定在了marker上,位置也不需要操心,弹窗就是跟着marker走的。

但是这个方案有个问题,就是setContent()方法传的参数虽然支持html片段,但是如果产品要求你的弹窗要美观,好看,特别是要和系统的其他弹窗一样的风格,那就惨了。

这个html片段可能就很长,而且样式也不好调。

还有一个重要的问题是,弹窗里如果要支持和别的组件互动,需求有其他业务逻辑,就更费力了。

当然也能解决。比如,需要传递一个click事件,如:

onclick="javascript:window.clickHandle()"

然后外面再定义一个全局的clickHandle()zhge 


window.goToDevicePanel = function() {
   // TODO
}

这样基本也能实现整个需求。

但是感觉很不爽,所以有第二个方案

如果能在点击图标时,能获取到该地图点位图标所在的浏览器页面的绝对坐标位置,那完全可以用一个自定义的组件代替这个popup弹窗来展示在图标的边上。

然后将点击后传出来的参数数据打印出来,发现确实有这个坐标:

containerPoint这个属性里包含了坐标信息。切记不是下面这个layerPoint,虽然有的时候这两个属性的值是一样的,但是当你移动地图的时候,就会发现layerPoint和containerPoint不一样的,而containerPoint才是准确的。

 好了,有了这个坐标,现在就很明确了。

将这个坐标的[x, y]稍作调整(取决于弹窗要在图标的哪个位置),就能作为自定义弹窗组件的在整个页面绝对布局下的left和top。

到了自定义组件,那问题都好解决了,什么需求都将不是问题。

好了,两个方案都说清楚了,请结合实际情况,选择哪个方案。

你学废了吗?

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

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

相关文章

v38.Switch语句

1.Switch语句可以替代if-else语句 2.具体使用 Switch(expression) { case label:...... } ①将x与case后的label 进行比较; ②注意后面有冒号; ③从上往下开始检查case; ④如果…

011 变量

变量的定义 注意事项 作用域 类变量:定义在类中的变量,类的整个生命周期内可用实例变量:定义在类中的变量,类的实例可以使用局部变量:定义在方法中的变量,仅在方法内可以使用 class Dog{// 类变量static …

数据采集与预处理02 :网络爬虫实战

数据采集与预处理02 :网络爬虫实战 爬虫基本知识 1 HTTP的理解 URL uniform resource locator. 是统一资源定位符,URI identifier是统一资源标识符。几乎所有的URI都是URL。 URL前部一般可以看到是HTTP还是HTTPS, 这是访问资源需要的协议…

HelloWorld(java)

1.切换盘符:找到刚刚书写的代码 2.编译:javac是JDK提供的编译工具,通过这个工具,把当前路径下下的HelloWorld.java文件编译成class文件 3.运行:java也是JDK提供的一个工具,作用就是用来运行代码&#xff…

2024.1.23 寒假训练记录(6)

记录一个训练赛踩的大坑:往函数里传vector一定要加引用!犯了三次的错误还是记不住,服了,一道题调了一个小时。 文章目录 CF 1490E Accidental VictoryCF 1753B Factorial DivisibilityCF 1454E Number of Simple PathsAT ARC148A …

ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>=5.12

一、错误描述 ImportError: The Qt version imported is 5.9.7 but Matplotlib requires Qt>5.12 在用python中的plt包进行绘图时对plt进行了更新,更新之后再运行以前的代码就出现了这个问题。 二、bug消除 (一)解决方法——升级pyqt包…

Java面试题之基础篇

文章目录 一:谈谈你对面向对象的理解二:JDK、JRE、JVM三者区别和联系三:和equals比较四:hashCode与equals五:final六:String、StringBuffer、StringBuilder七:重载与重写的区别?八&a…

【云原生】认识docker容器操作命令

目录 一、容器操作命令 1、创建容器 2、删除容器以及停止容器运行 3、查看容器的运行状态 4、查看容器的详细信息 5、将容器的文件传输到宿主机以及将宿主机的文件传输到容器中 6、批量删除容器 7、进入容器 二、容器的迁移 1、先在容器中创建测试文件 2、将容器存储…

永磁同步电机矢量控制原理

永磁同步电机数学模型 永磁同步电机的磁场定向控制

宝塔面板部署MySQL并结合内网穿透实现公网远程访问本地数据库

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

x-cmd pkg | ascii-image-converter - 图像转 ASCII 艺术照工具

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 ascii-image-converter 是图像转换工具,用于将图像转换为 ascii art 图片并在控制台上打印。 首次用户 使用 x env use ascii-image-converter 即可自动下载并使用 在终端运行 eval "$(curl https:/…

部署 IT 资产管理系统 GLPI

一、GLPI 介绍 GLPI 简介 参考:https://github.com/glpi-project/glpi GLPI 是一款开源的 IT 资产管理和服务台软件,可以帮助组织管理和跟踪 IT 资产、故障、变更、问题等。 使用 Docker 来部署 GLPI 可以简化安装和配置过程,并提供一个独立…

透明拼接屏代工:专业制造与质量保证

透明拼接屏代工是指专业的代工厂家根据客户的需求,为其生产透明拼接屏产品。随着透明拼接屏市场的不断扩大,越来越多的企业选择通过代工方式快速进入市场。尼伽小编将深入探讨透明拼接屏代工的优势、选择合适的代工厂家以及质量保证等方面的内容。 一、透…

[C语言]百行代码实现通讯录(进阶篇)

目录 前言: 1.进阶通讯录特点: 2.实现步骤: (1)定义一个结构体来存储联系人的基本信息例如:名字、电话、性别等 ; (2)定义另一个结构体来封装联系人及其个数以及记录…

C语言零基础入门第1天《什么是C语言?》

C语言零基础入门第1天《什么是C语言?开篇点题》 1、什么是C语言2、为什么要使用 C?3、C有哪些好处、优点? 4、C排行榜排名5、C语言为什么是编程语言的神?6、鼓励你,为你叫好! C语言——编程之本&#xff0c…

vulhub之Zabbix篇

CVE-2016-10134--SQL注入 一、漏洞介绍 zabbix是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。 漏洞环境 在vulhub靶场进行复现,启动zabbix 3.0.3。 二、复现步骤 1…

L1-096 谁管谁叫爹(Java)

《咱俩谁管谁叫爹》是网上一首搞笑饶舌歌曲,来源于东北酒桌上的助兴游戏。现在我们把这个游戏的难度拔高一点,多耗一些智商。 不妨设游戏中的两个人为 A 和 B。游戏开始后,两人同时报出两个整数 NA 和 NB。判断谁是爹的标准如下: …

一文让你彻底搞懂cookie和session产生漏洞的原理

首先让我们来看看登录的一般流程: 输入账号密码提交给后端;后端进行判断账号密码是否一致,这里的逻辑根据每个程序员的想法去写;如果通过2登录成功,跳转登录成功的页面; 如果通过2登录失败,跳转…

每日一题——LeetCode1309.解码字母到整数映射

方法一 个人方法&#xff1a; 由题意可得&#xff1a; 1、1-26对应a-z&#xff0c;只不过从10开始&#xff0c;后面要加#才能表示字母 2、10# - 26# 都是三位数&#xff0c;开头<2&#xff0c;结尾都为# 3、某个数后面两位如果不为#那么该数为1-9对应a-i&#xff0c;如果…

pikachu_csrf通关攻略

csrf&#xff08;get&#xff09; 打开pikachu靶场&#xff1a; 1. 根据提示给的账户密码进行登录 2. 打开代理拦截数据包将拦截数据发送到已打开的burp中&#xff1a; 修改数据进行发包&#xff1a; 从上面的url可见&#xff0c;修改用户信息的时候&#xff0c;是不带任何不…