添加 最大速度 和 平均速度 计算/显示

This commit is contained in:
Shikong 2023-05-14 02:19:22 +08:00
parent 5a196caa73
commit 3726db0ad3

View File

@ -48,11 +48,22 @@
keep-color keep-color
/> />
</div> </div>
<div id="container"></div> <div id="container">
<div class="fixed bg-amber-50 rounded-r z-max text-center" style="width: 300px" v-if="view.filterData.length > 0">
<div class="flex">
<div class="w-1/4">最高速度</div>
<div>{{view.speed.max}} km/h</div>
</div>
<div class="flex">
<div class="w-1/4">平均速度</div>
<div>{{view.speed.avg}} km/h</div>
</div>
</div>
</div>
</template> </template>
<script setup> <script setup>
import AMapLoader from '@amap/amap-jsapi-loader'; import AMapLoader from '@amap/amap-jsapi-loader';
import {reactive, ref} from "vue"; import {reactive, ref, shallowReadonly, toRaw} from "vue";
import DateTimeSelector from "matrix-middle-service-web/src/components/DateTimeSelector.vue"; import DateTimeSelector from "matrix-middle-service-web/src/components/DateTimeSelector.vue";
import {useQuasar} from "quasar"; import {useQuasar} from "quasar";
import moment from "moment"; import moment from "moment";
@ -83,7 +94,15 @@ const data = {
labelsLayer: {}, labelsLayer: {},
markers: [], markers: [],
tmpMarker: {}, tmpMarker: {},
infoWindow: {},
} }
const view = reactive({
filterData: [],
speed: {
max: 0,
avg: 0
}
})
const layers = reactive({ const layers = reactive({
satellite: { satellite: {
inst: {}, inst: {},
@ -239,6 +258,7 @@ function clearMap(){
map.remove(data.polyline) map.remove(data.polyline)
map.remove(data.labelsLayer) map.remove(data.labelsLayer)
map.remove(data.markers) map.remove(data.markers)
map.remove(data.infoWindow)
} }
@ -260,6 +280,18 @@ function drawMap(){
return a.time.isBefore(b.time)?-1:1 return a.time.isBefore(b.time)?-1:1
}) })
view.filterData = _data;
let sortSpeedData = JSON.parse(JSON.stringify(view.filterData)).sort((a,b)=>{return b.speed - a.speed})
view.speed.max = ((sortSpeedData[0]||{}).speed*3.6 || 0).toFixed(2);
if(view.filterData.length === 0){
view.speed.avg = 0
} else {
view.speed.avg = ((view.filterData.map(item=>item.speed || 0).reduce((prev,cur)=>{
return prev + cur
},0) / view.filterData.length) * 3.6).toFixed(2);
}
console.log("data", _data) console.log("data", _data)
data.tmpMarker = new AMap.Marker({ data.tmpMarker = new AMap.Marker({
@ -344,8 +376,6 @@ function drawMap(){
for (let i = 0; i < _data.length; i++) { for (let i = 0; i < _data.length; i++) {
let datum = _data[i] let datum = _data[i]
console.log(prev,datum.time, datum.time.diff(prev,'m') <= 5)
if (prev.year() === datum.time.year() && prev.month() === datum.time.month() && prev.date() === datum.time.date() && datum.time.diff(prev,'m') <= 5 ) { if (prev.year() === datum.time.year() && prev.month() === datum.time.month() && prev.date() === datum.time.date() && datum.time.diff(prev,'m') <= 5 ) {
prev = datum.time prev = datum.time
} else { } else {