Browse Source

优化轨迹

master
xh 1 week ago
parent
commit
1e9a1719fb
  1. 10
      web/src/views/HandDevice/Home/components/HistoricalCurve.vue
  2. 3
      web/src/views/HandDevice/Home/components/constants/map.constants.ts
  3. 55
      web/src/views/HandDevice/Home/index.vue

10
web/src/views/HandDevice/Home/components/HistoricalCurve.vue

@ -93,12 +93,10 @@ async function getData(row: MarkerData) {
ElMessage.error('没有数据') ElMessage.error('没有数据')
historicalData.value = [] historicalData.value = []
} }
historicalData.value = data
.sort((a, b) => a.ts - b.ts)
.map((item) => ({
...item,
timeStr: dayjs(item.ts).format('YYYY-MM-DD HH:mm:ss')
}))
historicalData.value = data.map((item) => ({
...item,
timeStr: dayjs(item.ts).format('YYYY-MM-DD HH:mm:ss')
}))
} catch (error) { } catch (error) {
// ElMessage.error(error.message) // ElMessage.error(error.message)
} finally { } finally {

3
web/src/views/HandDevice/Home/components/constants/map.constants.ts

@ -47,8 +47,7 @@ export const DEFAULT_MARKERS = []
// 地图默认配置 // 地图默认配置
export const MAP_DEFAULTS = { export const MAP_DEFAULTS = {
// tileUrl: 'http://qtbj.icpcdev.site/roadmap/{z}/{x}/{y}.png', // tileUrl: 'http://qtbj.icpcdev.site/roadmap/{z}/{x}/{y}.png',
tileUrl:
'https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
tileUrl:'https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
center: [116.3912757, 39.906217] as [number, number], center: [116.3912757, 39.906217] as [number, number],
zoom: 10, zoom: 10,
maxZoom: 18, maxZoom: 18,

55
web/src/views/HandDevice/Home/index.vue

@ -4,8 +4,8 @@
<OpenLayerMap <OpenLayerMap
ref="mapRef" ref="mapRef"
class="map-container" class="map-container"
:showDrawFences="true"
:showTrajectories="true" :showTrajectories="true"
:showDrawFences="false"
:markers="filterMarkers" :markers="filterMarkers"
:fences="fences" :fences="fences"
@time-range-change="timeRangeChange" @time-range-change="timeRangeChange"
@ -159,15 +159,9 @@ const getMarkers = async () => {
return { return {
...i, ...i,
coordinates: [i.longitude || 0, i.latitude || 0] as [number, number], coordinates: [i.longitude || 0, i.latitude || 0] as [number, number],
// data: [],
timeStr: i.time ? dayjs(i.time).format('YYYY-MM-DD HH:mm:ss') : '', timeStr: i.time ? dayjs(i.time).format('YYYY-MM-DD HH:mm:ss') : '',
// value: i.value,
// unit: i.unit,
// gasStatus: i.gasStatus, //
// batteryStatus: i.batteryStatus, //
// fenceStatus: i.fenceStatus, //
// onlineStatus: i.onlineStatus, //线
// enableStatus: i.enableStatus, //
statusStr: statusStr, // statusStr: statusStr, //
statusColor: getStatusColor(statusStr), // statusColor: getStatusColor(statusStr), //
statusLabel: getStatusLabel(statusStr), // statusLabel: getStatusLabel(statusStr), //
@ -263,35 +257,42 @@ async function showTrajectory(item: MarkerData) {
let before = arr[index - 1] let before = arr[index - 1]
let after = arr[index + 1] let after = arr[index + 1]
let before_after_distance = getDistance(
[after.longitude, after.latitude],
[before.longitude, before.latitude]
)
//
if (before_after_distance < 6) {
console.log('过滤小范围移动点位', before_after_distance)
return false
}
let beforeDistance = getDistance( let beforeDistance = getDistance(
[before.longitude, before.latitude], [before.longitude, before.latitude],
[item.longitude, item.latitude] [item.longitude, item.latitude]
) )
console.log('beforeDistance', beforeDistance)
if (beforeDistance < 40) {
return true
}
let afterDistance = getDistance( let afterDistance = getDistance(
[after.longitude, after.latitude], [after.longitude, after.latitude],
[item.longitude, item.latitude] [item.longitude, item.latitude]
) )
console.log('afterDistance', afterDistance)
if (afterDistance < 40) {
return true
// 40m,20m
if (beforeDistance > 40 && afterDistance > 40 && before_after_distance < 20) {
console.log(
'过滤掉前和后点位相差小于20m的,且与前、后点位都超过40m的',
beforeDistance,
afterDistance,
before_after_distance
)
return false
} }
let before_after_distance = getDistance(
[after.longitude, after.latitude],
[before.longitude, before.latitude]
)
console.log('before_after_distance', before_after_distance)
if (before_after_distance < 20) {
return true
}
// console.log('beforeDistance', afterDistance)
// console.log('', beforeDistance,'',afterDistance,'',before_after_distance)
return false
return true
}) })
.map((j) => { .map((j) => {
return { return {
@ -373,15 +374,13 @@ onMounted(() => {
getFences() getFences()
console.log('定时器,暂时关掉,太烦了')
getDataTimer.value = setInterval(() => { getDataTimer.value = setInterval(() => {
if (!componentsIsActive.value) { if (!componentsIsActive.value) {
return return
} }
getMarkers() getMarkers()
getFences() getFences()
}, 5000)
}, 4000)
}) })
onActivated(() => { onActivated(() => {

Loading…
Cancel
Save