高端百度地图开发2:自定义水滴头像(鼠标事件、API封装对接)

news2024/11/26 22:31:28

高端百度地图开发系列

  • 高端百度地图开发1:自定义水滴头像(自定义标注覆盖物、Overlay覆盖类)

自定义水滴头像之鼠标事件、API封装对接

  • 高端百度地图开发系列
  • 一、添加自定义覆盖物的方法
  • 二、对接API数据
    • 1.获取API数据(模拟)
    • 2.遍历数据
    • 3.添加自定义覆盖物封装函数
    • 4.添加监听事件
  • 三、覆盖物类
    • 1.Overlay
    • 2.MapPanes
  • 四、鼠标操作单击事件

在这里插入图片描述

一、添加自定义覆盖物的方法

var headerImg1 = new LockAvatarLay(new BMap.Point(116.407845, 39.914101), 'images/header_bg1.png', {});
        map.addOverlay(headerImg1);
        var headerImg2 = new LockAvatarLay(new BMap.Point(116.457592, 39.907851), 'images/header_bg2.png', {});
        map.addOverlay(headerImg2);
        var headerImg2 = new LockAvatarLay(new BMap.Point(116.416486, 39.887259), 'images/header_bg3.png', {});
        map.addOverlay(headerImg2);

二、对接API数据

1.获取API数据(模拟)

 var dataArr =
        [
            {"poi_lng": 116.407845, "poi_lat": 39.914101, "avatar": "images/header_bg1.png", "id": 1},
            {"poi_lng": 116.457592, "poi_lat": 39.907851, "avatar": "images/header_bg2.png", "id": 2},
            {"poi_lng": 116.416486, "poi_lat": 39.887259, "avatar": "images/header_bg3.png", "id": 3},
            {"poi_lng": 116.328955, "poi_lat": 39.900545, "avatar": "images/header_bg4.png", "id": 4}
        ];

2.遍历数据

  //遍历数据;
    function getMarker(markerArr) {
        for (var i = 0; i < markerArr.length; i++) {
            var p0 = markerArr[i].poi_lng;
            var p1 = markerArr[i].poi_lat;
            var id = markerArr[i].id;
            var avatar = markerArr[i].avatar;
            var point = new window.BMap.Point(p0, p1)
            addMarker(point, avatar, id);
        }
    }

3.添加自定义覆盖物封装函数

    //添加自定义覆盖物;
    function addMarker(point, avatar) {
        var headerImg = new LockAvatarLay(point, avatar, {});
        map.addOverlay(headerImg);
    }

4.添加监听事件

 //添加监听事件
    LockAvatarLay.prototype.addEventListener = function (event, fun) {
        this._div['on' + event] = fun;
    }

三、覆盖物类

1.Overlay

覆盖物的抽象基类,所有覆盖物均继承基类的方法。此类不可实例化。

方法返回值描述
initialize(map: Map)HTMLElement抽象方法,用于初始化覆盖物,当调用map.addOverlay时,API将调用此方法。自定义覆盖物时需要实现此方法。自定义覆盖物时需要将覆盖物对应的HTML元素返回
isVisible()Boolean判断覆盖物是否可见
draw()none抽象方法,当地图状态发生变化时,由系统调用对覆盖物进行绘制。自定义覆盖物需要实现此方法
show()none显示覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为空
hide()none隐藏覆盖物。对于自定义覆盖物,此方法会自动将initialize方法返回的HTML元素样式的display属性设置为none

2.MapPanes

此类表示地图上所有覆盖物的容器集合,没有构造函数,通过对象字面量形式表示。通过Map的getPanes方法可获得该对象实例。

属性类型描述
floatPaneHTMLElement信息窗口所在的容器
markerMouseTargetHTMLElement标注点击区域所在的容器
floatShadowHTMLElement信息窗口阴影所在的容器
labelPaneHTMLElement文本标注所在的容器
markerPaneHTMLElement标注图标所在的容器
markerShadowHTMLElement标注阴影所在的容器
mapPaneHTMLElement折线、多边形等矢量图形所在的容器

四、鼠标操作单击事件

将数据通过封装函数进行传递,获取对应头像的ID,然后进行弹窗或信息展示;

    //自定义覆盖物和事件调用;
    function addMarker(point, avatar, id) {
        var headerImg = new LockAvatarLay(point, avatar, {});
        map.addOverlay(headerImg);

        //为自定义覆盖物添加点击事件
        headerImg.addEventListener('click', function () {
            console.log(id);
        });
    }

@漏刻有时

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

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

相关文章

LeetCode--HOT100题(28)

目录 题目描述&#xff1a;2. 两数相加&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;2. 两数相加&#xff08;中等&#xff09; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且…

让我们玩个游戏:找出缅北诈骗网络中的“狼人杀”!

大数据产业创新服务媒体 ——聚焦数据 改变商业 近期&#xff0c;《孤注一掷》掀起了一阵观影热潮。这部电影展现了在高科技与诈骗手法交织下的惊心动魄的故事&#xff0c;不仅让观众们大呼过瘾&#xff0c;更让人们对现实生活中日益猖獗的缅北诈骗产生了深入的反思。 《孤注一…

【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 1 MySQL概述 MySQL是一款互联网上广泛使用的开源关系型数据库管理系统。它最初由瑞典的MySQL AB公司开发&#xff0c;并于1995年首次发布。如今&#xff0c;MySQL由Oracle公司维护…

Redis缓存设计

缓存能够有效地加速应用的读写速度&#xff0c;同时也可以降低后端负载&#xff0c;对日常应用的开发至关重要。但是将缓存加入应用架构后也会带来一些问题&#xff0c;本文将针对这些问题介绍缓存使用技巧和设计方案。 1缓存的收益和成本 下图左侧为客户端直接调用存储层的架…

【C++】STL---string

string类 一、C语言中的字符串二、string类三、模拟实现 string 类0. string 类的声明1. 构造函数2. 析构函数3. 拷贝构造函数4. 赋值运算符重载5. 迭代器6. 元素访问&#xff1a;[] 重载7. 流插入与流提取重载8. 与容量相关的接口&#xff08;1&#xff09;size&#xff08;2&…

使用CST仿真软件完成单站雷达目标RCS仿真

第一步&#xff1a;新建模版 第二步&#xff1a;选择微波与射频/光学应用 第三步&#xff1a;选择雷达应用 第四步&#xff1a;选择单站雷达静态RCS 第五步&#xff1a;选择小目标工作流。&#xff08;这里的小目标要求小于10倍波长&#xff0c;否则需要选大目标工作流&#x…

nuxt3 简易教程

代码仓库 https://github.com/malred/nuxt_tutorial https://gitee.com/malguy/nuxt_tutorial 什么是 Nuxt 根据 Vue 官网的说法 而 Nuxt 是由 Vue 官方团队开发的 SSR 框架 创建项目 npx nuxi init todo 项目结构 创建完需要手动安装依赖 cd todo npm i # 启动 npm run dev…

大语言模型之二 GPT发展史简介

得益于数据、模型结构以及并行算力的发展&#xff0c;大语言模型应用现今呈井喷式发展态势&#xff0c;大语言神经网络模型成为了不可忽视的一项技术。 GPT在自然语言处理NLP任务上取得了突破性的进展&#xff0c;扩散模型已经拥有了成为下一代图像生成模型的代表的潜力&#x…

@capacitor/filesystem更改downloadfile支持本地文件下载

ionic监听外部程序&#xff1a; android下需要在AndroidManifest.xml添加内容&#xff08;具体参考ionic native的APP插件&#xff09;&#xff0c;配置例如&#xff1a; <intent-filter tools:ignore"AppLinkUrlError"><action android:name"android.…

【Matlab智能算法】PSO优化(单隐层)BP神经网络算法

上一篇博客介绍了BP-GA&#xff1a;BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值&#xff0c;本篇博客将介绍用PSO&#xff08;粒子群优化算法&#xff09;优化BP神经网络。 1.优化思路 BP神经网络的隐藏节点通常由重复的前向传递和反向传播的方式来决定&#…

(统计学习方法|李航)第四章 朴素贝叶斯算法——贝叶斯估计

贝叶斯估计方法&#xff1a; 计算男女时只有两个值&#xff0c;所以K2 贝叶斯估计就是拉普拉斯平滑 估计方法&#xff1a;为什么叫做贝叶斯估计呢&#xff1f; 例题&#xff1a; 重新回顾以下朴素贝叶斯&#xff1a; 对他求导&#xff0c;求出最大值 得到了色i他的估计值&…

第三章:前端UI框架介绍

文章目录 一、Bootstrap1.1 Bootstrap简介及版本1.2 Bootstrap使用 二、AntDesign2.1 简介2.2 基本使用2.3 antd pro 三、ElementUI3.1 简介3.2 基本使用 四、Vant4.1 简介4.2 基本使用 一、Bootstrap 1.1 Bootstrap简介及版本 1、 简介 Bootstrap&#xff0c;来白 Twitter&a…

服务管理和计划任务

文章目录 服务管理计划任务 服务管理 systemctl 命令字 服务名 //配置服务与systemctl有关的命令字&#xff1a; 计划任务 一次性计划 at 时间 at now 5 min //当前时间五分钟后执行 at -l //列出计划任务 atrm 任务号 //删除计划任务执行完命令后Ctrld生效 周期性计…

LiveNVR监控流媒体Onvif/RTSP功能-视频流水印如何叠加视频水印叠加动态图片叠加视频流时间示例

LiveNVR视频流水印如何叠加视频水印叠加动态图片叠加视频流时间示例 1、介绍2、摄像头OSD设置水印3、前端页面叠加4、视频流水印4.1、图片水印示例4.2、时间戳水印示例 5、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、介绍 监控视频平台播放视频监控的时候&#xff0c;除了满足正…

提升效率!云原生生态从业人员不可或缺的工具集合!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

shell脚本安装nginx

文章目录 shell脚本原理变量脚本安装nginx shell脚本原理 以删除桌面文件的脚本为例&#xff0c;执行脚本后&#xff0c;shell脚本将代码给内核&#xff0c;内核读取后执行命令&#xff0c;如果shell脚本也在桌面上&#xff0c;执行后这个脚本文件也会被删除。 变量 echo $SH…

Java程序控制结构,一文带你彻底拿下~

—— 程序的运行流程控制会解决程序是如何执行的 三大程序流程控制结构 1&#xff09;顺序结构&#xff1a;程序从上到下逐行逐行的执行&#xff0c;中间没有任何的判断和跳转 2&#xff09;分支结构&#xff1a;程序具有选择性的进入某一段代码 3&#xff09;循环结构&#xf…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图&#xff0c;右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS&#xff0c;Redact User是HR。虽然SYS具备所有权限&#xff0c;但还是报以下错误。其实这个错误是针…

jvm——垃圾回收机制(GC)详解

开始之前有几个GC的基本问题 什么是GC&#xff1f; GC 是 garbage collection 的缩写&#xff0c;意思是垃圾回收——把内存&#xff08;特别是堆内存&#xff09;中不再使用的空间释放掉&#xff1b;清理不再使用的对象。 为什么要GC&#xff1f; 堆内存是各个线程共享的空间…

spring常用注解标签总结

1&#xff1a;Component等 名称Component/Controller/Service/Repository类型类注解位置类定义上方作用设置该类为spring管理的bean属性value&#xff08;默认&#xff09;&#xff1a;定义bean的id 说明: Component注解如果不起名称&#xff0c;会有一个默认值就是当前类名首…