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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 百度地图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是我这边后台需要的id
            openWebsocket(param);
         	Loading();
    		//当地图加载完毕后回调结束Loading
    		 initMap((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);
}



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


以上

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:20:11  更:2022-04-18 18:23:00 
 
开发: 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/26 4:22:57-

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