百度地图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

相关文章

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.