diff --git a/src/views/map/index.vue b/src/views/map/index.vue index 4d423f4..c4ff75a 100644 --- a/src/views/map/index.vue +++ b/src/views/map/index.vue @@ -1105,7 +1105,7 @@ export default { password: '58d06a44d56c4445b4c019492f86ee8d' }, subscription: { - topic: '1698584148364034050/UwbBQ/+/prop', + topic: '1698584148364034050/+/+/prop', qos: 0 }, @@ -2519,47 +2519,45 @@ export default { }, mqttMessage(CORP_INFO_ID) { this.client.on('message', (topic, message) => { - // console.info(message) - // if(this.intOne === 0){ - // this.receiveNews = this.receiveNews.concat(message) - // console.log(`Received message ${message} from topic ${topic}`) - const item = JSON.parse(message) - // 将地图上剩余的点与最新的定位人员点进行对比 更新地图上已存在的点 新增地图上之前没有的点 - const index = this.onePerLocArr.findIndex(item1 => { - return item1.id.toString() === item.deviceCode.toString() - }) - const x = item.properties[2].value - const y = item.properties[3].value - const pointColor = this.isPointxyWithinTheArea(this.pointBox, x, y) - if (index !== -1) { - this.onePerLocArr[index].x = x - this.onePerLocArr[index].y = y - this.onePerLocArr[index].icon_type = 'img4_0' + pointColor - ry_drag.getPosition(this.onePerLocArr[index]) - } else { - // const id = '4_0_' +item.deviceCode - const perLoc = { - id: item.deviceCode, - // name: item.realName, - x: x, - y: y, - icon_type: 'img4_0' + pointColor, - // infoname: item.realName, - data_id: item.deviceCode, - point_type: '标记点peoplePositionOne', - label: '人员定位', - corpInfoId: CORP_INFO_ID - } - this.onePerLocArr.push(perLoc) - ry_drag.addEntity(perLoc) - this.mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode + // created by liu jun mqtt返回的参数可能是一个数组 + let peopleList = JSON.parse(message) + if (!Array.isArray(peopleList)) { + peopleList = [peopleList] + } + for (let i = 0; i < peopleList.length; i++) { + const item = peopleList[i] + // 如果不是人员信息则跳过 + if (item.properties.length < 3 || item.properties[2].identifier !== 'X' || item.properties[3].identifier !== 'Y') { + continue + } + // 将地图上剩余的点与最新的定位人员点进行对比更新地图上已存在的点新增地图上之前没有的点 + const index = this.onePerLocArr.findIndex(item1 => { + return item1.id.toString() === item.deviceCode.toString() + }) + const x = item.properties[2].value + const y = item.properties[3].value + const pointColor = this.isPointxyWithinTheArea(this.pointBox, x, y) + if (index !== -1) { + this.onePerLocArr[index].x = x + this.onePerLocArr[index].y = y + this.onePerLocArr[index].icon_type = 'img4_0' + pointColor + ry_drag.getPosition(this.onePerLocArr[index]) + } else { + const perLoc = { + id: item.deviceCode, + x: x, + y: y, + icon_type: 'img4_0' + pointColor, + data_id: item.deviceCode, + point_type: '标记点peoplePositionOne', + label: '人员定位', + corpInfoId: CORP_INFO_ID + } + this.onePerLocArr.push(perLoc) + ry_drag.addEntity(perLoc) + this.mqttPoint[this.subscription.topic.substring(0, this.subscription.topic.lastIndexOf('+')) + item.deviceCode] = item.deviceCode + } } - // this.intOne++ - // } else if(this.intOne < 5){ - // this.intOne++ - // } else { - // this.intOne = 0 - // } }) }, clearMqttPoint(prefix) {