Commit 42b0618d authored by 李玲燕's avatar 李玲燕

修改车端UI、停车点

parent 4e749a66
......@@ -8,7 +8,7 @@ set (CMAKE_CXX_STANDARD 11)
# Version.
set (MAJOR_VERSION "1")
set (MINOR_VERSION "1")
set (PATCH_VERSION "7")
set (PATCH_VERSION "8")
# Import cmake modules.
list (APPEND CMAKE_MODULE_PATH "$ENV{HT_BUILDSYS_CMAKE_MODULES}")
......
{
"SERVICE_IP": "172.16.0.101:1234",
"SERVICE_IP": "192.168.92.185:1234",
"LOG_SERVE_IP":"192.168.93.87:8020",
"MAP_CENTER": [39.74441007068,111.24544532751],
"version": "1.1.4"
......
......@@ -337,9 +337,10 @@ export default class Socket {
const worker = this.root.worker.worker[key]
switch(type) {
case '/vehicle/basicinfo':
const {avoidancePath, obstacle} = msg
const {avoidancePath, obstacle, stopPoint} = msg
avoidancePath && worker.postMessage({name: 'avoidancePath', msg: avoidancePath})
obstacle && worker.postMessage({name: 'obstacle', msg: obstacle})
stopPoint && worker.postMessage({name: 'stopPoint', msg: [stopPoint]})
this.vehicleStore.setBasicInfo(msg)
break
case '/vehicle/nextPathinfo':
......
......@@ -120,11 +120,13 @@ self.onmessage = function({data}) {
for (let i = 0; i < msg.length; i++) {
let item = msg[i]
const { basic, safe, traj } = item
const { vehicleType, vehicleLoad, vehicleLatitude, vehicleLongtitude, vehicleHeading, vehicleID } = basic
const { vehicleType, vehicleLoad, vehicleLatitude, vehicleLongtitude, vehicleHeading, vehicleID, status } = basic
let image = null
if ([0, 11, 10, 15].includes(vehicleType)) {
image = vehicleLoad > 10 ? 'heavyTruck1' : 'emptyTruck1'
// 故障状态
if (status == 17) image += 'fault'
} else {
image = VEHICLE_IMAGE[vehicleType]
}
......
......@@ -27,6 +27,7 @@ export const useMapStore = defineStore('map', {
nextPathAvailable: null, // 下一段路路权
currPathAvailable: null, // 当前路径路权
dynamicPathinfo: null, // 车辆动态路权信息
stopPoint: null, // 停车点
}
},
actions: {
......
......@@ -10,12 +10,14 @@
<ul class="basic-info">
<li v-for="list in lists" :key="list.index">
<p v-for="item in list" :key="item.index">
<template v-if="Object.keys(debug).includes(item.name)">
<span>{{item.label}}</span>
<span v-if="item.name === 'target_velocity' || item.name === 'VechicleSpd'">{{Number(debug[item.name]).toFixed(1)}}</span>
<span v-if="['target_velocity', 'VechicleSpd', 'gasBrake', 'soc'].includes(item.name)">{{Number(debug[item.name]).toFixed(1)}}</span>
<span v-else-if="['obstacleFrontDistance', 'obstacleFrontFlag', 'obstacleBackBarriDistance'].includes(item.name)">{{Number(debug[item.name]).toFixed(2)}}</span>
<span v-else-if="item.name === 'vehicleLoad'">{{vehicleLoad}}</span>
<span v-else-if="item.name === 'oil'">{{surplusOil}}</span>
<span v-else>{{debug[item.name]}}</span>
</template>
</p>
</li>
<template v-if="debug['followVisible']">
......@@ -100,11 +102,11 @@
height: calc(100% - 40px);
li {
display: flex;
height: 3.5vh;
max-height: 3.5vh;
line-height: 3.5vh;
min-height: 30px;
// min-height: 30px;
p {
padding: 5px 10px;
padding: 0 10px;
min-width: 50%;
white-space: nowrap;
span:nth-child(1) {
......
......@@ -62,7 +62,7 @@ export const INFORMATION_MESSAGE = [
[
{
name: 'Retarder_cmd',
label: '制动给定'
label: '缓行制动给定'
},
{
name: 'retarder_position',
......@@ -71,6 +71,36 @@ export const INFORMATION_MESSAGE = [
],
[
{
name: 'parkBrakeCmd',
label: '驻车制动给定'
},
{
name: 'parkBrakeStatus',
label: '反馈'
}
],
[
{
name: 'exhaustBrakeCmd',
label: '排气制动给定'
},
{
name: 'exhaustBrakeStatus',
label: '反馈'
}
],
[
{
name: 'retarderGearCmd',
label: '缓行档位给定'
},
{
name: 'retarderGearStatus',
label: '反馈'
}
],
[
{
name: 'loadBrakeCmd',
label: '装载制动给定'
},
......@@ -97,6 +127,22 @@ export const INFORMATION_MESSAGE = [
],
[
{
name: 'gearNumber',
label: '具体档位'
},
{
name: 'soc',
label: 'Soc'
}
],
[
{
name: 'gasBrake',
label: '气刹压力'
}
],
[
{
name: 'EngSpd',
label: '发动机转速'
},
......
......@@ -64,6 +64,7 @@
const mapLayers = markRaw({})
const safeObjects = markRaw({})
const safeTrajs = markRaw({})
const symbleLayers = markRaw({})
const singlePaths = markRaw([])
const navigate = ref(true)
const currentRotation = ref(0)
......@@ -95,6 +96,7 @@
avoidancePath, // 绕障路径
obstacleData,
dynamicPathinfo, // 车辆动态路权信息
stopPoint, // 停车点
} = mapStoreToRefs
const vehicleStore = useVehicleStore()
const vehicleStoreToRefs = storeToRefs(vehicleStore)
......@@ -263,6 +265,7 @@
}
function dealMapPath(value, layerName, color) {
if (!map) return
if (mapLayers[layerName]) {
map.removeLayer(mapLayers[layerName])
delete mapLayers[layerName]
......@@ -357,6 +360,34 @@
mapStore.setData(layerName, null)
}
function deleteSymble(layerName) {
Object.keys(symbleLayers).forEach(item => {
if(item.includes(layerName)){
map.removeLayer(symbleLayers[item])
}
})
}
function dealSymbleLayer(value, layerName, url) {
if (!map) return
deleteSymble(layerName)
if (value && value.length) {
for (let i = 0; i < value.length; i++) {
let [lat, lon] = value[i]
if (!lat && !lon) continue
symbleLayers[`${layerName}`] = L.marker([lat, lon], {
icon: L.icon({
iconUrl: `/image/${url}.png`,
iconSize: [50, 50],
iconAnchor: [25, 35],
}),
zIndexOffset: 100,
}).addTo(map)
}
}
}
function removeLayer(obj, vehicleID) {
if (obj[vehicleID]) {
for (let item in obj[vehicleID]) {
......@@ -415,7 +446,7 @@
safeTrajs[vehicleID]['circle'].bringToFront()
} else {
if(dealedData && !dealedData.length) return;
if(dealedData=='undefined') return;
if(dealedData=='undefined' || !dealedData) return;
let path = L.polyline(JSON.parse(JSON.stringify(dealedData)), {})
safeTrajs[vehicleID]['path'] = path
let bufferLine = turf.buffer(path.toGeoJSON(), trajPathWid / 2, { units: "meters" })
......@@ -466,7 +497,8 @@
let beforeIconUrl = vehicles[vehicleID].getIcon().options
? vehicles[vehicleID].getIcon().options.iconUrl
: vehicles[vehicleID].getIcon().iconUrl
if (!beforeIconUrl.includes(image)) {
let beforeIconImage = beforeIconUrl.match(/image\/(\S*).png/)[1]
if (beforeIconImage != image) {
let newIcon = L.icon({
iconUrl: `/image/${image}.png`,
iconSize,
......@@ -639,6 +671,14 @@
adjustmentLayer()
}, {immediate: true, deep: true})
// TODO: 增加停车点图标
watch(stopPoint, (value, oldValue) => {
if (value && oldValue && value.length && oldValue.length) {
if (value[0][0] == oldValue[0][0] && value[0][1] == oldValue[0][1]) return
}
dealSymbleLayer(value, 'stopPoint', 'stop_point')
}, {immediate: true, deep: true})
watch(currPathinfo, (value) => {
dealMapPath(value, 'currentPath', currPathAvailable.value === 1 ? '#19ae19' : '#8B4513')
adjustmentLayer()
......
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