Commit 79a65e8e authored by heng.zhang3@inzymeits.com's avatar heng.zhang3@inzymeits.com
Browse files

v2x使用ws方式

parent 71ad822f
......@@ -161,10 +161,9 @@
<input type="button" id="resumeHistoryVehicle" value="重新开始历史轨迹" />
</div>
<div>
<input type="button" id="startV2X" value="开始V2X" />
<input type="button" id="startV2X" value="全部车辆V2X" />
<input type="button" id="startV2X6" value="6号车V2X" />
<input type="button" id="removeV2X" value="清除V2X" />
<input type="button" id="startCommunication" value="开始通信效果" />
<input type="button" id="removeCommunication" value="清除通信效果" />
</div>
<div>
<input type="button" id="addPolygon" value="绘制感知区域" />
......@@ -203,6 +202,8 @@
var trafficIncidentArr = [];//热力图否显示
var polygon = null; // 感知区域
var v2xSocket = null;
var v2xArr = []; // 记录所有v2x
//高亮模型Id
var highlightModelId = null;
var handler = (e) => {
......@@ -242,12 +243,7 @@
// 设置地图中心点和级别
document.getElementById("setZoomAndCenter").onclick = setZoomAndCenter;
function setZoomAndCenter() {
var options = {
longitude: 117.31884370955275,
latitude: 38.989795506281467,
height: 527.966445,
zoom: 16,
};
var options = { "longitude": 117.346635, "latitude": 38.99408, "height": 51.43313 }
map.setZoomAndCenter(options);
}
......@@ -297,7 +293,7 @@
document.getElementById("flyTo").onclick = flyTo;
function flyTo() {
var options = {
position: [117.3670360408276, 39.00412281044355, 276.84],
position: [117.34584096, 38.99557144, 276.84],
orientation: [0, -90],
};
camera.flyTo(options);
......@@ -1156,15 +1152,40 @@
// 开始V2V
document.getElementById("startV2X").onclick = startV2X;
function startV2X() {
const url = 'wss://itg-dev.cu-sc.com:13443/WSPLUS/socket?token=111&msgType=4&reType=51world'
startVehicleV2X(url)
}
// 6号车V2X
document.getElementById("startV2X6").onclick = startV2X6;
function startV2X6() {
const url = 'wss://itg-dev.cu-sc.com:13443/WSPLUS/socket?token=111&msgType=4&reType=51world&vehicleId=267'
startVehicleV2X(url)
}
// 开始车辆V2X
function startVehicleV2X(url) {
// let options = {
// color: [255, 255, 0, 1],
// vehicleId: "仿AYZQS001", //鄂A17U5N
// objectId: "1200000479", // 连接车辆的效果
// // vehicleId: "测试车辆001", //鄂A17U5N
// name: '注意行人'
// };
// map.getVehicle("21e7a9e6d2884122804788dac1e002cc").startV2x(options);
// const options2 = {
// vehicleId: ['1200001992', 'sxt000045'],//车辆ID
// color: [255, 0, 0, 1],
// }
// map.renderCommunication(options2)
// setTimeout(() => {
// map.stopCommunication(options2)
// }, 200)
// return
// 257 XM140001
// 259 XM140002
// 261 XM140003
......@@ -1176,23 +1197,30 @@
// 219 仿AYZQS001
// 221 仿A-0234DA
const url = 'wss://itg-dev.cu-sc.com:13443/WSPLUS/socket?token=111&msgType=4&reType=51world&vehicleId=267'
v2xArr = []; // 记录所有v2x
// 创建一个WebSocket实例
socket = new WebSocket(url);
v2xSocket = new WebSocket(url);
// 当WebSocket打开时执行
socket.onopen = function (event) {
v2xSocket.onopen = function (event) {
console.log("socket连接成功!");
};
// 当接收到消息时执行
socket.onmessage = function (event) {
const data = JSON.parse(event.data)
const { objects, endTime, typeName, id } = data
v2xSocket.onmessage = function (event) {
let data = JSON.parse(event.data)
let { objects, endTime, typeName, id } = data
// objects 如果只有一项,则是单车预警;如果有两项,则需要有两个车辆的通信效果
const mainCar = objects[0]
let mainCar = objects[0]
// 如果id不在v2xArr中,则添加
const find = v2xArr.find(item => item.id === id)
if (!find) {
v2xArr.push(data)
}
let options = {
id: id,
color: [255, 255, 0, 1],
......@@ -1203,6 +1231,7 @@
if (objects.length > 1) {
const options2 = {
id,
vehicleId: [mainCar.id, objects[1].id],//车辆ID
color: [255, 0, 0, 1],
}
......@@ -1217,48 +1246,53 @@
if (endTime) {
map.getVehicle("21e7a9e6d2884122804788dac1e002cc").stopV2x(mainCar.id)
v2xArr.splice(v2xArr.findIndex(item => item.id === id), 1)
// v2x的效果只能添加一个,但车辆能同时存在多个v2x
const lastV2x = v2xArr[v2xArr.length - 1]
if (lastV2x) {
const options = {
id: lastV2x.id,
color: [255, 255, 0, 1],
vehicleId: lastV2x.objects[0].id,
name: lastV2x.name
};
map.getVehicle("21e7a9e6d2884122804788dac1e002cc").startV2x(options);
}
const options2 = {
id,
vehicleId: [mainCar.id, objects[1].id],//车辆ID
}
console.log('前端结束通信', id, mainCar.id, objects[1].id)
map.stopCommunication(options2)
if (objects.length > 1) {
console.log('结束结束结束', mainCar.id, objects[1].id)
// console.log('结束结束结束', mainCar.id, objects[1].id)
} else {
console.log('结束结束结束', mainCar.id)
// console.log('结束结束结束', mainCar.id)
}
};
}
}
// 开始通信效果
document.getElementById("startCommunication").onclick = startCommunication;
function startCommunication() {
map.renderCommunication(options2)
}
// 清除通信效果
document.getElementById("removeCommunication").onclick = removeCommunication;
function removeCommunication() {
map.removeCommunication()
}
// 隐藏V2V
// document.getElementById("hideV2X").onclick = hideV2X;
// function hideV2X() {
// let options = {
// color: [255, 255, 0, 1],
// vehicleId: "仿AYZQS001", //鄂A17U5N
// };
// map.getVehicle("21e7a9e6d2884122804788dac1e002cc").hideV2x(options);
// }
// 清除V2V
document.getElementById("removeV2X").onclick = removeV2X;
function removeV2X() {
let vehicleId = "仿AYZQS001";
map.getVehicle("21e7a9e6d2884122804788dac1e002cc").stopV2x(vehicleId);
v2xSocket.close()
v2xArr.forEach(item => {
map.getVehicle("21e7a9e6d2884122804788dac1e002cc").stopV2x(item.objects[0].id)
if (item.objects.length > 1) {
const options2 = {
id,
vehicleId: [item.objects[0].id, item.objects[1].id],//车辆ID
}
map.stopCommunication(options2)
}
})
v2xArr = []
}
// 绘制感知区域
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment