百度地图BMapGL通过websocket发送的实时点进行打点,并给每个点添加点击事件

本文主要是介绍百度地图BMapGL通过websocket发送的实时点进行打点,并给每个点添加点击事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于BMapGL没有海量打点的方法、Bmap3.0没有卫星地图,在各种取舍下还是使用了BMapGL进行打点
并且在开发过程中发现百度地图的画线方法Polyline实时的画线是监听不到点击事件的(必须要一条完整的线)所有只能用Marker进行打点


通过websocket实时发送数据

//websocket数据样式 例
data: {
latitude: 36.00
longitude: 116.11
sendTime: 1650006526000
Id: 1
}
type: 2

vue

<template><div class="viewBox"><div class="bm-view" id="container"></div></div>
</template><script>
//Websocket 的封装和网上分享的封装都大差不差就不展示出来了
import { sendWebsocket, closeWebsocket } from "@/utils/websocket.js";
import { reactive,toRefs,onBeforeMount,onMounted} from 'vue'
import { initMap, setPoint,setMarker} from "../utils/BDmap";
import { ElLoading } from "element-plus";
export default {name: 'BDmap',setup() {onMounted(() => {//param是我这边后台需要的idopenWebsocket(param);Loading();//当地图加载完毕后回调结束LoadinginitMap((tilesloaded) => {loadingState.close();});})function Loading() {loadingState = ElLoading.service({lock: true,text: "正在加载地图",background: "rgba(0, 0, 0, 0.7)",});}//Websocket返还的消息function wsMessage(data) {if (data.type === 2) {setMarker([data.data]);}}//给Websocket发送消息function openWebsocket(param) {/**@param  发送参数 @wsMessage 返还的参数的方法@wsError 发生错误的方法**/sendWebsocket(param, wsMessage, wsError);}return {}}};
</script>

BDmap.js

let map
let init = [116.404, 39.925];
let points = [];
let Marker
let opts = {width: 200,height: 80,title: '信息'
};//初始化地图的方法
export function initMap(callback) {map = new BMapGL.Map("container");setPoint(init);map.addControl(new BMapGL.ScaleControl()); // 添加比例尺控件// map.addControl(new BMapGL.OverviewMapControl()); //添加缩略地图控件map.enableScrollWheelZoom(true);map.setMapType(BMAP_EARTH_MAP);map.addEventListener("tilesloaded", function () {callback('tilesloaded')});
}//重新定向地图 在项目中有些功能会重复使用
export function setPoint(point) {map.centerAndZoom(new BMapGL.Point(point[0], point[1]), 16);
}//删除点
function removeMaker() {let allOverlay = map.getOverlays();map.removeOverlay(allOverlay[0]);
}//进行打点
export function setMarker(mapData) {
//设置一个值超过这个值进行动态删除,以免无限扩大let allOverlay = map.getOverlays();if (allOverlay.length >= 400) {removeMaker()}// let myIcon = new BMapGL.Icon("/jsdemo/img/car.png", new BMapGL.Size(52, 26));let point = new BMapGL.Point(mapData.longitude, mapData.latitude);Marker = new BMapGL.Marker(point);Marker.id= mapData.id;Marker.sendTime = mapData.sendTime;//设置监听事件Marker.addEventListener('click', function (e) {let infoWindow = new BMapGL.InfoWindow(`<p>id:${e.currentTarget.id}</p><p>发送时间:${parseTime(e.currentTarget.sendTime)}</p>`, opts);map.openInfoWindow(infoWindow, point); // 开启信息窗口});map.addOverlay(Marker);
}

//例
在这里插入图片描述


以上

这篇关于百度地图BMapGL通过websocket发送的实时点进行打点,并给每个点添加点击事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/375144

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi