uniapp百度地图聚合

// loadBMap.js  ak 百度key
export default function loadBMap(ak) {
	return new Promise((resolve, reject) => {
		//聚合API依赖基础库,因此先加载基础库再加载聚合API
		asyncLoadBaiduJs(ak)
			.then(() => {
				// 调用加载第三方组件js公共方法加载其他资源库
				// 加载聚合API
				// MarkerClusterer_min.js依赖TextIconOverlay.js。因此先加载TextIconOverlay.js
				asyncLoadJs('http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay.js')
					.then(() => {
						asyncLoadJs(
								'http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js'
								)
							.then(() => {
								asyncLoadJs(
										'http://api.map.baidu.com/library/InfoBox/1.2/src/InfoBox_min.js'
										)
									.then(() => {
										resolve()
										return true
									})
									.catch(err => {
										reject(err)
									})
							})
							.catch(err => {
								reject(err)
							})
					})
					.catch(err => {
						reject(err)
					})
			})
			.catch(err => {
				reject(err)
			})
	})
}
// 加载百度地图基础组件js
export function asyncLoadBaiduJs(ak) {
	return new Promise((resolve, reject) => {
		if (typeof BMap !== 'undefined') {
			resolve(BMap)
			return true
		}
		window.onBMapCallback = function() {
			resolve(BMap)
		}
		let script = document.createElement('script')
		script.type = 'text/javascript'
		script.src = 'http://api.map.baidu.com/api?v=3.0&ak=' + ak + '&s=1&callback=onBMapCallback'
		script.onerror = reject
		document.head.appendChild(script)
	})
}
// 加载第三方组件js公共方法
export function asyncLoadJs(url) {
	return new Promise((resolve, reject) => {
		let script = document.createElement('script')
		script.type = 'text/javascript'
		script.src = url
		document.head.appendChild(script)
		script.onload = () => {
			resolve()
		}
		script.onerror = reject
	})
}
// import loadBMap from '@/utils/loadBMap.js'
initMapc() {
				let that = this
				loadBMap('百度key').then(() => {
					map = new BMap.Map('mapContainer')
					const centerPoint = new BMap.Point(that.longitude, that.latitude)
					map.centerAndZoom(centerPoint, that.zoom)
					// 添加缩放控件
					map.addControl(new BMap.NavigationControl());
					markerArr = [];
					that.parkList.forEach(item => {
						let point = new BMap.Point(item.longitude, item.latitude);
						let marker = new BMap.Marker(point);
						marker.id = item.id;
						marker.title = item.name;
						marker.address = item.address
						// 添加标签
						const opts = {
							position: point, // 指定文本标注所在的地理位置
							offset: new BMap.Size(8, -30) // 设置文本偏移量
						};
						// 创建文本标注对象
						let c =
							"<div style='background: #fff;padding: 6px 8px;border-radius: 4px'>" +
							"<div style='display: flex;align-items: center;'> <span style='color: #333;font-size:14px'>" +
							item.name +
							"    " +
							"</span>" +
							"</div>" +
							"<div style='font-size: 12px;color: rgb(153, 153, 153);margin-top:2px;'>" +
							item.address + "</div>" + "</div>"
						const label = new BMap.Label(c, opts);
						// 自定义文本标注样式
						label.setStyle({
							color: "#000",
							fontSize: "12px",
							fontFamily: "微软雅黑",
							border: '0',
							padding: '0',
							// ointerEvents: 'none' // 设置文本标签不接受鼠标事件
						});
						// 将标签添加到地图中
						// map.addOverlay(label);


						// 添加信息窗口
						marker.addEventListener('click', function() {
							// alert(`Marker ID: ${marker.id}, Title: ${marker.title}`);
							that.navigateTo('/pages/shop/packageList?id=' + marker.id + "&name=" +
								marker.title)
						});
						label.addEventListener("click", function(e) {
							// alert("您点击了文本标签");
							// console.log(e)
							// console.log(marker.id)
							that.navigateTo('/pages/shop/packageList?id=' + marker.id + "&name=" +
								marker.title)
						});
						label.setZIndex(999); // 设置zIndex属性
						marker.setLabel(label);
						markerArr.push(marker);
						map.addOverlay(marker);
					})

					var markerClusterer = new BMapLib.MarkerClusterer(map, {
						markers: markerArr
					})
					
					
					// 监听地图移动、放大缩小事件
					map.addEventListener("movestart", function(){
						markerClusterer.getMarkers().forEach(marker => {
							// console.log(marker.id)
							let c =
								"<div style='background: #fff;padding: 6px 8px;border-radius: 4px'>" +
								"<div style='display: flex;align-items: center;'> <span style='color: #333;font-size:14px'>" +
								marker.title +
								"    " +
								"</span>" +
								"</div>" +
								"<div style='font-size: 12px;color: rgb(153, 153, 153);margin-top:2px;'>" +
								marker.address + "</div>" + "</div>"
							const label = new BMap.Label(c, {
								position: marker.getPosition(),
								offset: new BMap.Size(20, -10)
							});
							label.setStyle({
								color: "#000",
								fontSize: "12px",
								fontFamily: "微软雅黑",
								border: '0',
								padding: '0',
							});
							marker.setLabel(label);
							map.addOverlay(marker);
							label.addEventListener("click", function(e) {
								// alert("您点击了文本标签");
								// console.log(e)
								// console.log(marker.id)
								that.navigateTo('/pages/shop/packageList?id=' + marker.id +
									"&name=" +
									marker.title)
							});
						})
					});
					map.addEventListener("moveend", function(){
					    markerClusterer.getMarkers().forEach(marker => {
					    	// console.log(marker.id)
					    	let c =
					    		"<div style='background: #fff;padding: 6px 8px;border-radius: 4px'>" +
					    		"<div style='display: flex;align-items: center;'> <span style='color: #333;font-size:14px'>" +
					    		marker.title +
					    		"    " +
					    		"</span>" +
					    		"</div>" +
					    		"<div style='font-size: 12px;color: rgb(153, 153, 153);margin-top:2px;'>" +
					    		marker.address + "</div>" + "</div>"
					    	// // 添加文本标签到每个 marker 上
					    	// const label = new BMap.Label(c, {
					    	// 	position: marker.getPosition(),
					    	// 	offset: new BMap.Size(20, -10)
					    	// });
					    	const label = new BMap.Label(c, {
					    		position: marker.getPosition(),
					    		offset: new BMap.Size(20, -10)
					    	});
					    	label.setStyle({
					    		color: "#000",
					    		fontSize: "12px",
					    		fontFamily: "微软雅黑",
					    		border: '0',
					    		padding: '0',
					    	});
					    	marker.setLabel(label);
					    	map.addOverlay(marker);
					    	label.addEventListener("click", function(e) {
					    		// alert("您点击了文本标签");
					    		// console.log(e)
					    		// console.log(marker.id)
					    		that.navigateTo('/pages/shop/packageList?id=' + marker.id +
					    			"&name=" +
					    			marker.title)
					    	});
					    })
					});
					map.addEventListener("zoomstart", function(){
					    markerClusterer.getMarkers().forEach(marker => {
					    	// console.log(marker.id)
					    	let c =
					    		"<div style='background: #fff;padding: 6px 8px;border-radius: 4px'>" +
					    		"<div style='display: flex;align-items: center;'> <span style='color: #333;font-size:14px'>" +
					    		marker.title +
					    		"    " +
					    		"</span>" +
					    		"</div>" +
					    		"<div style='font-size: 12px;color: rgb(153, 153, 153);margin-top:2px;'>" +
					    		marker.address + "</div>" + "</div>"
					    	// // 添加文本标签到每个 marker 上
					    	// const label = new BMap.Label(c, {
					    	// 	position: marker.getPosition(),
					    	// 	offset: new BMap.Size(20, -10)
					    	// });
					    	const label = new BMap.Label(c, {
					    		position: marker.getPosition(),
					    		offset: new BMap.Size(20, -10)
					    	});
					    	label.setStyle({
					    		color: "#000",
					    		fontSize: "12px",
					    		fontFamily: "微软雅黑",
					    		border: '0',
					    		padding: '0',
					    	});
					    	marker.setLabel(label);
					    	map.addOverlay(marker);
					    	label.addEventListener("click", function(e) {
					    		// alert("您点击了文本标签");
					    		// console.log(e)
					    		// console.log(marker.id)
					    		that.navigateTo('/pages/shop/packageList?id=' + marker.id +
					    			"&name=" +
					    			marker.title)
					    	});
					    })
					});
					map.addEventListener("zoomend", function(){
					    markerClusterer.getMarkers().forEach(marker => {
					    	// console.log(marker.id)
					    	let c =
					    		"<div style='background: #fff;padding: 6px 8px;border-radius: 4px'>" +
					    		"<div style='display: flex;align-items: center;'> <span style='color: #333;font-size:14px'>" +
					    		marker.title +
					    		"    " +
					    		"</span>" +
					    		"</div>" +
					    		"<div style='font-size: 12px;color: rgb(153, 153, 153);margin-top:2px;'>" +
					    		marker.address + "</div>" + "</div>"
					    	// // 添加文本标签到每个 marker 上
					    	// const label = new BMap.Label(c, {
					    	// 	position: marker.getPosition(),
					    	// 	offset: new BMap.Size(20, -10)
					    	// });
					    	const label = new BMap.Label(c, {
					    		position: marker.getPosition(),
					    		offset: new BMap.Size(20, -10)
					    	});
					    	label.setStyle({
					    		color: "#000",
					    		fontSize: "12px",
					    		fontFamily: "微软雅黑",
					    		border: '0',
					    		padding: '0',
					    	});
					    	marker.setLabel(label);
					    	map.addOverlay(marker);
					    	label.addEventListener("click", function(e) {
					    		// alert("您点击了文本标签");
					    		// console.log(e)
					    		// console.log(marker.id)
					    		that.navigateTo('/pages/shop/packageList?id=' + marker.id +
					    			"&name=" +
					    			marker.title)
					    	});
					    })
					});
				})
			},

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

定时任务执行 报错command not found 解决方案

目录 写在前面所需知识 问题复现解决方式方法1. 使用绝对路径的命令&#xff1a;方法2. 重新加载环境变量&#xff1a;成功解决截图 原理 写在前面 定时任务脚本出现command not found报错&#xff0c;解决方案。 所需知识 定时任务shell脚本环境变量 问题复现 编写了一个…

HaDoop Hive

目录 1.VMware 的配置 2.JDK的部署 3.防火墙&#xff0c;SElinux&#xff0c;时间同步设置 4.云平台 5.阿里云 6.UCloud 7.Hadoop理论 7.1 Hadoop理论 7.2 VMware Hadoop实践 7.3集群部署常见问题解决 7.4 云服务器上 Hadoop实践 7.5 HDFS 的 shell 7.6…

android进阶-Binder

参考&#xff1a;Android——Binder机制-CSDN博客 机制&#xff1a;Binder是一种进程间通信的机制 驱动&#xff1a;Binder是一个虚拟物理设备驱动 应用层&#xff1a;Binder是一个能发起进程间通信的JAVA类 Binder相对于传统的Socket方式&#xff0c;更加高效Binder数据拷贝…

​​​【收录 Hello 算法】5.1 栈

目录 5.1 栈 5.1.1 栈的常用操作 5.1.2 栈的实现 1. 基于链表的实现 2. 基于数组的实现 5.1.3 两种实现对比 5.1.4 栈的典型应用 5.1 栈 栈&#xff08;stack&#xff09;是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子…

融资融券概念和操纵流程,案例解析

融资融券是一种金融工具&#xff0c;它允许投资者在证券市场上进行杠杆交易。简单来说&#xff0c;融资就是借钱买股票&#xff0c;融券就是借股票卖出。这种交易方式可以帮助投资者在短期内获得更高的收益&#xff0c;但同时也伴随着较高的风险。 案例背景&#xff1a; 假设…

JavaWeb--13Mybatis(2)

Mybatis&#xff08;2&#xff09; 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

C语言 | Leetcode C语言题解之第82题删除排序链表中的重复元素II

题目&#xff1a; 题解&#xff1a; struct ListNode* deleteDuplicates(struct ListNode* head) {if (!head) {return head;}struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->next head;struct ListNode* cur dummy;while (cur->next && cu…

【回溯 状态压缩 深度优先】37. 解数独

本文涉及知识点 回溯 状态压缩 深度优先 LeetCode37. 解数独 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只…

3d如何同时贴两个图在模型上?---模大狮模型网

在3D设计中&#xff0c;为模型贴上纹理或图案是常见的操作&#xff0c;可以使模型更加逼真和生动。然而&#xff0c;有时候我们需要在同一个模型上同时贴上两个不同的图案&#xff0c;这可能会对初学者构成一定的挑战。在本文中&#xff0c;我们将分享一些简单而有效的方法&…

基于SSM框架多人命题系统

采用技术 基于SSM框架多人命题系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 学生端 登录 个人中心 公告信息 试题信息 管理员 登录 个人信息…

阳光厨房/明厨亮灶解决方案

现状分析 随着社会和科技的进步&#xff0c;日益增多的食品安全问题&#xff0c;国家四部委市场监督管理总局、教育部、公安部、国家卫生健康委联合印发《校园食品安全守护行动方案&#xff08;2020年—2022年&#xff09;》“互联网明厨亮灶”工程号召&#xff0c;对食品、餐饮…

机器学习-L1正则/L2正则

机器学习-L1正则/L2正则 目录 1.L1正则 2.L2正则 3.结合 1.L1正则 L1正则是一种用来约束模型参数的技术&#xff0c;常用于机器学习和统计建模中&#xff0c;特别是在处理特征选择问题时非常有用。 想象一下&#xff0c;你在装备行囊准备去旅行&#xff0c;但你的行囊有一…

详解Python测试框架Pytest的参数化

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不…

【深度学习】Diffusion扩散模型原理解析2

由于篇幅受限&#xff0c;CSDN不能发布超过一定次数的文章&#xff0c;故在此给出上一篇链接&#xff1a;【深度学习】diffusion原理解析 3.2、目标函数求解 里面的最后一项&#xff0c; q ( x T ∣ x 0 ) q(x_T|x_0) q(xT​∣x0​)我们前面提到过&#xff0c;其近似服从标准…

flowable多对并发网关跳转的分析

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

C++:虚函数表Hook

Hook 在计算机编程中&#xff0c;"Hook"&#xff08;钩子&#xff09;是一种技术&#xff0c;用于拦截并修改特定事件或函数的执行流程。它允许程序员在特定的代码点插入自定义的代码&#xff0c;以实现对程序行为的修改、监视或增强。 虚函数表Hook 虚函数表&#…

控制台打印空数组展开有数据

控制台打印空数组展开有数据 控制台显示&#xff1a; 代码如下&#xff1a; export const getDict1 (dictCode) > {let list []queryDict({ dictCode }).then(({data}) > {list.push( ...data.map(item > ({ label: item.itemText, value: item.itemValue })))})c…

目标检测算法YOLOv7简介

YOLOv7由Chien-Yao Wang等人于2022年提出&#xff0c;论文名为&#xff1a;《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/2207.02696 &#xff0c;项目网页&#xff…

解决 git 因输入密码错误而导致的报错无法推送问题

报错内容如下&#xff1a; > git push origin master:master fatal: unable to access https://gitee.com/spring-in-huangxian-county/web-tts-vue.git/: OpenSSL SSL_connect: Connection was reset in connection to gitee.com:443 出错原因 根本原因是本机存储的 账户…

大型动作模型 (LAM):AI 驱动的交互的下一个前沿

1.概述 现在人工智能中几个关键的领域&#xff0c;包括生成式人工智能&#xff08;Generative AI&#xff09;、大型动作模型&#xff08;Large Action Models, LAM&#xff09;、以及交互式人工智能&#xff08;Interactive AI&#xff09;。以下是对这些概念的简要解释和它们…