IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 百度地图 自定义覆盖物 自定义字体图标 动态修改图标颜色 -> 正文阅读

[JavaScript知识库]百度地图 自定义覆盖物 自定义字体图标 动态修改图标颜色

实现效果:

在这里插入图片描述
图标用的是字体图标,为了方便动态改变颜色

关键代码

	function ComplexCustomOverlay(params) {
	    let defaultParams = {
	        point: { lng: 0, lat: 0 },
	        fontSize: 28,
	        deg: 0,
	        className: '',
	        color: 'red',
	    };
	    defaultParams = Object.assign(defaultParams, params);
	    this._point = defaultParams.point; // 坐标
	    this._fontSize = defaultParams.fontSize; // 字体图标大小
	    this._deg = defaultParams.deg; // 旋转角度
	    this._className = defaultParams.className; // class名称(图标名称)
	    this._color = defaultParams.color; // 设置图标的颜色
	}
	
	ComplexCustomOverlay.prototype = new BMap.Overlay();
	
	// 实现初始化方法
	ComplexCustomOverlay.prototype.initialize = function (map) {
	    // 保存map对象实例
	    this._map = map;
	    // 创建div元素,作为自定义覆盖物的容器
	    var div = (this._div = document.createElement('div'));
	    div.style.position = 'absolute';
	    div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat); // 聚合功能?
	    // 可以根据参数设置元素外观
	    div.style.height = this._fontSize + 'px';
	    div.style.width = this._fontSize + 'px';
	
	    var arrow = (this._arrow = document.createElement('i'));
	    arrow.className = 'iconfont ' + this._className;
	    arrow.style.display = 'inline-block';
	    arrow.style.fontSize = this._fontSize + 'px';
	    arrow.style.color = this._color;
	    arrow.style.transform = 'rotate(' + this._deg + 'deg)';
	    div.appendChild(arrow); // 将div添加到覆盖物容器中
	
	    map.getPanes().labelPane.appendChild(div); //getPanes(),返回值:MapPane,返回地图覆盖物容器列表  labelPane呢???
	    return div;
	};
	
	// 实现绘制方法
	ComplexCustomOverlay.prototype.draw = function () {
	    var map = this._map;
	    var pixel = map.pointToOverlayPixel(this._point);
	    this._div.style.left = pixel.x - parseInt(this._fontSize) / 2 + 'px';
	    this._div.style.top = pixel.y - parseInt(this._fontSize) / 2 + 'px';
	};
	
	//4、自定义覆盖物添加事件方法
	ComplexCustomOverlay.prototype.addEventListener = function (event, fun) {
	    this._div['on' + event] = fun;
	};

调用方式:

let params = {
    point: new BMap.Point(114.00491526048702, 22.53049351287813),
    deg: 90,
    className: 'icon-shangzhijiantou1', // 字体图标className
    color: 'red',
};
var myCompOverlay = new ComplexCustomOverlay(params);
map.addOverlay(myCompOverlay); //将标注添加到地图中
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:27:56  更:2022-03-22 20:28:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:52:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码