【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

yizhihongxing

一. 问题描述

  1. 创建地图对象,并添加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图:

![](https://img2023.cnblogs.com/other/2396482/202304/2396482-20230426112341568-722690351.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>

```

  1. 经下方的Gif图可看出,在点击marker标记时不会再误触map的点击事件。

【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

四. 问题解答

  1. 调用JavaScript版本的的华为地图服务,如何保护API秘钥?

答:具体措施可以查看如下指导文档:如何保护API秘钥?

五. 参考资料

  1. 通过华为地图API for JavaScript创建一个简单的网页地图

  2. 地图事件

  3. HWMap API

  4. 添加marker标记

  5. 标记事件

了解更多详情>>

访问地图服务联盟官网

获取地图服务开发指导文档

访问HMS Core 联盟官网

获取HMS Core 开发指导文档

关注我们,第一时间了解 HMS Core 最新技术资讯~

原文链接:https://www.cnblogs.com/hmscore/p/17355112.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • react-native-web跨平台实战

    1.背景  随着对用户体验要求的提高,产品要求提升用户体验,多端体验一致。随着多端相同的业务也越来越多,需要投入IOS,Android,Web多端开发人员。这就迫切的需要一种一次开发同时使用在Android ,IOS ,Web的解决方案。达到降本增效的目的。在几个小业面尝试,总结经验后,我们采用react-native-web多端适配。   2.问题 a.对…

    Android 2023年4月18日
    00
  • 在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统

    经济全球化的今天,人们在工作和生活中经常会与外语打交道。相较传播性较广的英语而言,其他语种的识别和阅读对大多数人来说是一件难事,此时就需要借助语言翻译软件来帮助理解。 华为 HMS Core 机器学习服务(ML Kit)翻译功能提供了多种翻译模式,不仅可以满足应用出行购物、网络社交等日常场景,还提供办公文档、视频字幕等专业翻译服务,满足多种语言和场景应用。其…

    Android 2023年4月18日
    00
  • Android Studio中的一些常见控件

    Android Studio是一款非常流行的用于开发Android应用程序的集成开发环境(IDE)。它提供了许多内置控件,使开发人员可以轻松创建应用程序界面和功能。在本文中,我们将介绍Android Studio中的一些常见控件,例如TextView,Button,EditText,ImageView等。 TextView控件 TextView是一个用于显示…

    Android 2023年4月17日
    00
  • Android模拟器调试串口

    一、安装虚拟串口软件 虚拟串口软件推荐 Virtual Serial Port Driver 官网 和 Virtual Serial Port Kit 官网 都可以免费试用15天。 这里以Virtual Serial Port Kit为例,打开安装好的Virtual Serial Port Kit,点击菜单栏的新增图标 然后选择两个端口点确定即可 1.1 测…

    Android 2023年4月17日
    00
  • 无线电发射设备管理规定

    2022年12月22日工业和信息化部令第57号公布,自2023年7月1日起施行 主要总结为以下几点: 1.型号核准证的有效期不短于2年,不超过5年,型号核准证每次延续的有效期不超过5年 2.微功率短距离无线电发射设备使用说明中应当注明“使用微功率短距离无线电发射设备应当符合国家无线电管理有关规定”字样。 3.型号核准代码应当在无线电发射设备上标注或者采用电子…

    Android 2023年4月18日
    00
  • Android 11全屏显示

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去掉标题栏 this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(Activi…

    Android 2023年4月17日
    00
  • 修改安卓ID为硬件唯一ID

    前言: 最近接到个需求,我们新产品上的外包侧APP需要使用硬件唯一ID(不管怎么升级怎么操作,ID始终不变和硬件绑定),用来做权限校验。 由于了解到安卓ID或序列号都会在擦除升级后重新随机生成,所以这里使用硬件上的ID来作为唯一ID,接下来进入正题 此篇以安卓7.1系统为例 一,常用硬件信息ID 这里列举一些常用的一芯一码ID查询获取方式 1. CPU ID…

    Android 2023年4月18日
    00
  • 【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案

    一. 问题描述 使用华为推送服务下发IM消息时,下发消息请求成功且code码为80000000,但是手机总是收不到消息; 在华为推送自助分析(Beta)平台查看发现,消息发送触发了频控。 二. 问题原因及背景 2023年1月05日起,华为推送服务对咨询营销类消息做了单个设备每日推送数量上限管理,具体数量上限可以查看如下文档:不同应用类别的推送数量上限要求。 …

    Android 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部