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

自定义水滴头像&自定义标注覆盖物

  • 一、引入百度地图JSAPI库
  • 二、构建map容器
    • 1. CSS样式表
    • 2.HTML容器
  • 三、核心代码
    • 1.百度地图API功能
    • 2.定义构造函数并继承Overlay
    • 3.初始化自定义覆盖物
    • 4.绘制覆盖物
    • 5.添加覆盖物

自定义标注覆盖物(Custom Overlay)是百度地图中的一种功能,它允许开发者在地图上绘制自定义的标记物,以更符合自己的业务需求和设计风格。通过自定义标注覆盖物,你可以在地图上添加各种类型的标记,如图标、文字、线条等,以丰富地图展示的内容。相比于普通的地图标注,自定义标注覆盖物具有更高的灵活性和可定制性。

使用百度地图的API,你可以定义自己的标注样式,包括标注的图标、形状、颜色、大小等。你还可以通过设置事件监听器,为标注添加交互功能,例如点击、拖拽等。

自定义标注覆盖物可以用于展示地理位置、标记兴趣点、显示业务数据等场景,让地图内容更加丰富生动。无论是在网页还是移动应用中,通过使用自定义标注覆盖物,你可以打造独特的地图展示效果,提升用户体验。
在这里插入图片描述

一、引入百度地图JSAPI库

    <script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=3H***"></script>

二、构建map容器

1. CSS样式表

      body, html {width: 100%;height: 100%;margin: 0;font-family: "微软雅黑";}#LockMap {width: 100%;height: 100%;}

2.HTML容器

<div id="LockMap"></div>

三、核心代码

1.百度地图API功能

// 百度地图API功能var map = new BMap.Map("LockMap");var points = new BMap.Point(116.407845, 39.914101);map.centerAndZoom(points, 13);map.enableScrollWheelZoom();

2.定义构造函数并继承Overlay

首先您需要定义自定义覆盖物的构造函数,通过构造函数参数可以传递一些自由的变量。设置自定义覆盖物对象的prototype属性为Overlay的实例,以便继承覆盖物基类。
如下示例,我们定义一个名为LockAvatarLay的构造函数,它包含中心点和边长两个参数,用来在地图上创建一个方形覆盖物。

    function LockAvatarLay(point, headerImg, {width = 50, height = 65}) {this._point = point;this._headerImg = headerImg;this._width = width;this._height = height;}

3.初始化自定义覆盖物

实现initialize方法,当调用map.addOverlay方法时,API会调用此方法。
当调用map.addOverlay方法添加自定义覆盖物时,API会调用该对象的initialize方法用来初始化覆盖物,在初始化过程中需要创建覆盖物所需要的DOM元素,并添加到地图相应的容器中。

 LockAvatarLay.prototype = new BMap.Overlay();LockAvatarLay.prototype.initialize = function (map) {this._map = map;var divBox = document.createElement("div");var divImg = document.createElement("div");/*头像背景框*/divBox.style.position = "absolute";divBox.style.width = this._width + "px";divBox.style.height = this._height + "px";divBox.style.backgroundImage = "url(./images/header_bg.png)";divBox.style.backgroundSize = "100% 100%";/*头像CSS*/divImg.style.position = "absolute";divImg.style.backgroundImage = `url(${this._headerImg})`;divImg.style.left = "4%";divImg.style.top = "0%";divImg.style.width = "80%";divImg.style.height = "60%";divImg.style.borderRadius = "50%";divImg.style.backgroundSize = "cover";divImg.style.border = "3px solid #08d5c0";//边框divBox.appendChild(divImg);// 将div添加到覆盖物容器中map.getPanes().markerPane.appendChild(divBox);// 保存div实例this._div = divBox;// 需要将div元素作为方法的返回值,当调用该覆盖物的show// hide方法,或者对覆盖物进行移除时,API都将操作此元素。return divBox;}

4.绘制覆盖物

  LockAvatarLay.prototype.draw = function () {var position = this._map.pointToOverlayPixel(this._point);this._div.style.left = position.x - this._width / 2 + "px";this._div.style.top = position.y - this._height * 7 / 10 + "px";}

5.添加覆盖物

   var headerImg1 = new LockAvatarLay(new BMap.Point(116.407845, 39.914101), 'images/header_bg1.png', {});map.addOverlay(headerImg1);

@漏刻有时

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:力扣刷题

题一&#xff1a;删除有序数组中的重复项 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的…

微信小程序实现双向滑动快捷选择价格(价格区间)

实现样子 提示&#xff1a;效果可以自己自定义&#xff0c;自己将文字样式更改为自己项目属性即可 实现达到方法 1、左边为最低价&#xff0c;右边为最高价格&#xff0c;可以拖动左边最低价选择价格。拖动右边为最高价。 2、当两个价格重合时&#xff0c;继续拖动&#xff0…

Redis_哨兵模式

9. 哨兵模式 9.1 简介 当主库宕机&#xff0c;在从库中选择一个&#xff0c;切换为主库。 问题: 主库是否真正宕机?哪一个从库可以作为主库使用?如何实现将新的主库的信息通过给从库和客户端&#xff1f; 9.2 基本流程 哨兵主要任务&#xff1a; 监控选择主库通知 会有…

机器学习笔记 - 基于C++的​​深度学习 二、实现卷积运算

一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <

BGP小综合

实验要求及拓扑 一、思路 1.使用OSPF使R2-R7之间可通。 2.各自宣告AS区域&#xff0c;两个区域两两之间建邻&#xff0c;AS2两个小区域之间建联邦&#xff08;R2与R5、R4与R7&#xff09;。 3.使R3、R6为路由反射器 RR反射器选取各小区域的路由器作为客户端 、非客户端 4.优…

谷粒商城第十一天-完善商品分组(主要添上关联属性)

目录 一、总述 二、前端部分 2.1 改良前端获取分组列表接口及其调用 2.2 添加关联的一整套逻辑 三、后端部分 四、总结 一、总述 前端部分和之前的商品品牌添加分类差不多。 也是修改一下前端的分页获取列表的接口&#xff0c;还有就是加上关联的那一套逻辑&#xff0c;…

大学生口才培训需求分析

标题&#xff1a;大学生口才培训需求分析 摘要&#xff1a; 本论文旨在分析大学生口才培训的需求&#xff0c;通过对大学生口才培训的重要性、现状和挑战进行研究&#xff0c;并结合相关理论和实践经验&#xff0c;提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…

内生性的蒙特卡罗模拟

这是一个很好的例子,通过蒙特卡洛模拟展示了忽略相关变量时,回归系数估计的偏差。 %% 蒙特卡洛模拟&#xff1a;内生性会造成回归系数的巨大误差 times 300; % 蒙特卡洛的次数 R zeros(times,1); % 用来储存扰动项u和x1的相关系数 K zeros(times,1); % 用来储存遗漏了x2…

解释器模式(Interpreter)

解释器模式是一种行为设计模式&#xff0c;可以解释语言的语法或表达式。给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;然后定义一个解释器&#xff0c;使用该文法来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式。 Interpreter is a behav…

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用&#xff08;branch prediction target reuse&#xff09;引发的前瞻执行处理器漏洞 CV…

Unity使用C# Protobuf源码

目录 第一步&#xff1a;下载源码 第二步&#xff1a;运行C#构建文件 第三步&#xff1a;处理报错&#xff08;如果你已安装对应的SDK则不会报错&#xff09; 第四步&#xff1a;复制库文件到你的工程 第一步&#xff1a;下载源码 protobuf github源码https://github.com/p…

纯前端 -- html转pdf插件总结

一、html2canvasjsPDF&#xff08;文字会被截断&#xff09;&#xff1a; 将HTML元素呈现给添加到PDF中的画布对象&#xff0c;不能仅使用jsPDF&#xff0c;需要html2canvas或rasterizeHTML html2canvasjsPDF的具体使用链接 二、html2pdf&#xff08;内容显示不全文字会被截断…