【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案
一. 问题描述
- 创建地图对象,并添加marker标记,对map和marker均添加了点击事件;
<body> <script> function initMap() { // 创建地图对象 const map = new HWMapJsSDK.HWMap(document.getElementById('map'), { center: { lat: 39.36322, lng: 116.3214 }, zoom: 8, }); map.on('click', handleMapClick); // 创建标记 const marker = new HWMapJsSDK.HWMarker({ map: map, position: { lat: 39.36322, lng: 116.3214 }, draggable: true }); // 给标记添加点击事件 marker.addListener('click', (e) => { console.log('marker mouse click'); }); } //创建map的点击事件 function handleMapClick(){ console.log('map mouse click'); } </script> </body> ``` 2. 在测试时发现点击marker标记时同时触发了map的点击事件,具体可以查看下方的Gif图:  ### 二. 解决方案 1. 经查阅华为地图服务的JavaScript版本的API指导文档发现,华为地图服务有提供un(event, callback)和map.on('click', callback)方法,这两个方法的作用分别是解绑事件监听和添加地图的鼠标左键点击事件。 2. 因为华为地图服务提供了事件监听的解绑方法,所以可以在marker的点击事件方法中先通过un(event, callback)方法解绑map的点击事件,事件解绑之后可以保证在点击marker时不会误触map的点击事件。 3. 当marker的事件监听业务执行完毕之后,可以再通过map.on('click', callback)方法 重新添加map的点击事件 ### 三. 代码示例及效果展示 1. 在marker的点击事件方法中先解绑map的点击事件,当marker的点击事件业务执行完毕之后,再重新添加map的点击事件。
<body> <script> function initMap() { // 创建地图对象 const map = new HWMapJsSDK.HWMap(document.getElementById('map'), { center: { lat: 39.36322, lng: 116.3214 }, zoom: 8, }); map.on('click', handleMapClick);
// 创建标记 const marker = new HWMapJsSDK.HWMarker({ map: map, position: { lat: 39.36322, lng: 116.3214 }, draggable: true }); // 给标记添加点击事件 marker.addListener('click', (e) => { //解绑map对象的点击事件 map.un('click', handleMapClick); console.log('marker mouse click'); //添加map对象的点击事件 map.on('click', handleMapClick); }); } function handleMapClick(){ console.log('map mouse click'); } </script>
</body> ```
- 经下方的Gif图可看出,在点击marker标记时不会再误触map的点击事件。
四. 问题解答
- 调用JavaScript版本的的华为地图服务,如何保护API秘钥?
答:具体措施可以查看如下指导文档:如何保护API秘钥?
五. 参考资料
了解更多详情>>
访问地图服务联盟官网
关注我们,第一时间了解 HMS Core 最新技术资讯~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
读书笔记丨远程服务调用和RESTful,如何分析和抉择?
摘要:相信未来REST规范将会变得更加流行和普及。 本文分享自华为云社区《云原生时代,远程服务调用和RESTful,如何分析和抉择?》,作者:breakDawn 。 随着云原生的概念越来越火,服务的架构应该如何发展和演进,成为很多程序员关心的话题。大名鼎鼎的《深入理解java虚拟机》一书作者于21年推出了新作《凤凰架构》,从这本书中可以看到当前时下很多最新的技术或者理念。 本博文将沉淀发布这本书的学习笔记和思考。 如果希望了解更加详细的内容,欢迎购买该书继续详细学习。 访问远程服务 1 远程服务调用 这一个章节主要讲解rpc的设计理念和发展历史。 先是讲解了IPC(进程间通信)所需要的各个必要因素 接着解释RPC 是IPC的一种特例(这是最初科学家们的想法) 但PRC存在很多可靠性的问题,并不能直接等同IPC的扩展。 接着提出了RPC的三个基本问题: 如何表示数据 即序列化协议, 有grpc的proto-buffer、json、xml、java-rmi基于java自带序列化之列的 如何传递数据 基于什么网络协议传输 java-rmi的远程协议 JSON-RPC协议 SOAP协议(web...
- 下一篇
保姆教程 | 用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话 | 京东云技术团队
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键。但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务。从云产品性能上来看,GPU云主机是最适合的工具之一,对于业务方或者个人开发者来讲,使用GPU云主机搭建AI大语言模型有以下优势: •高性能计算:GPU云主机提供了高性能GPU处理器,加速模型的训练和推理; •高性价比:灵活资源管理、可扩展性、弹性伸缩等云计算优势,根据业务或个人训练的需要,快速调整计算资源,满足模型的训练和部署需求; •开放性:云计算的开放性让用户更容易进行资源的共享和协作,为AI模型的研究和应用提供了更广泛的合作机会; •丰富的API和SDK:云计算厂商提供了丰富的API和SDK,使得用户能够轻松地接入云平台的各种服务和功能,进行定制化开发和集成。 在本文中,我们将以chatglm-6b为例详细介绍GPU云主机搭建AI大语言模型的过程,并使用Flask构建前端界面与该模型进行对话。 整个流程也比较简单:配置GPU云主机 → 搭建Jupyterlab开发环境 → 安装Ch...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19