From 1da688a58591d4d295eb2ef91244671bf6b3fe00 Mon Sep 17 00:00:00 2001
From: Shikong <919411476@qq.com>
Date: Thu, 18 May 2023 17:27:44 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E8=BD=A6=E5=8A=A8=E7=94=BB=E5=AE=9E?=
=?UTF-8?q?=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/views/record/AMapLocation.vue | 20 ++++++++++---
.../src/views/record/logic/play.ts | 30 +++++++++++++++++++
2 files changed, 46 insertions(+), 4 deletions(-)
create mode 100644 frontend/matrix-middle-service-web/src/views/record/logic/play.ts
diff --git a/frontend/matrix-middle-service-web/src/views/record/AMapLocation.vue b/frontend/matrix-middle-service-web/src/views/record/AMapLocation.vue
index 45e52ef..a55c68d 100644
--- a/frontend/matrix-middle-service-web/src/views/record/AMapLocation.vue
+++ b/frontend/matrix-middle-service-web/src/views/record/AMapLocation.vue
@@ -95,7 +95,14 @@
-
+
+
+
+ {{ opt.label }}
+
+
+
+
@@ -108,9 +115,7 @@ import DateTimeSelector from "matrix-middle-service-web/src/components/DateTimeS
import {useQuasar} from "quasar";
import moment from "moment";
import {locationRecord} from "matrix-middle-service-web/src/api/location/record";
-import {createCanvasDir} from "matrix-middle-service-web/src/views/record/logic/icon";
import {getAvgSpeed, getMaxSpeed} from "matrix-middle-service-web/src/views/record/logic/speed";
-import {randomColorList} from "matrix-middle-service-web/src/views/record/logic/color";
import {
checkLoginStatus,
loginRequest,
@@ -119,6 +124,7 @@ import {
import {fixedLocationHandler} from "matrix-middle-service-web/src/views/record/logic/location";
import {drawMarkers} from "matrix-middle-service-web/src/views/record/logic/markers";
import {drawLines} from "matrix-middle-service-web/src/views/record/logic/lines";
+import {playAnimation} from "matrix-middle-service-web/src/views/record/logic/play";
const $q = useQuasar();
const scrollArea = reactive({
thumbStyle: {
@@ -153,6 +159,10 @@ const date = ref({
const feature = reactive({
showFixed: false
})
+function play(item){
+ console.log(item)
+ playAnimation(map,data,view.lines[item.value],data.polylines[item.value])
+}
// 地图实例 和 数据不要交给 vue 管理 否则性能大打折扣 且 会有各种奇葩问题
let map = {}
const data = {
@@ -163,6 +173,7 @@ const data = {
markers: [],
tmpMarker: null,
infoWindow: {},
+ animateMarker: null,
}
const view = reactive({
filterData: [],
@@ -266,7 +277,8 @@ AMapLoader.load({
"AMap.Scale",
"AMap.HawkEye",
"AMap.ToolBar",
- "AMap.ControlBar"
+ "AMap.ControlBar",
+ "AMap.MoveAnimation"
],// 需要使用的的插件列表,如比例尺'AMap.Scale'等
"lang": "zh_cn"
}).then((AMap) => {
diff --git a/frontend/matrix-middle-service-web/src/views/record/logic/play.ts b/frontend/matrix-middle-service-web/src/views/record/logic/play.ts
new file mode 100644
index 0000000..04f4bed
--- /dev/null
+++ b/frontend/matrix-middle-service-web/src/views/record/logic/play.ts
@@ -0,0 +1,30 @@
+export function playAnimation(map,data,line,polyline){
+ console.log("playAnimation",line,polyline)
+ if(!data.animateMarker){
+ data.animateMarker = new AMap.Marker({
+ map: map,
+ position: [0,0],
+ icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png",
+ offset: new AMap.Pixel(-13, -26),
+ autoRotation: true
+ })
+ }
+
+ let path = line.map((item) => {
+ return new AMap.LngLat(item.longitude, item.latitude)
+ })
+
+ data.animateMarker.stopMove();
+ data.animateMarker.on("movealong",()=>{
+ // map.add(data.animateMarker)
+ })
+ data.animateMarker.on("moveend",()=>{
+ // setTimeout(()=>{
+ // map.remove(data.animateMarker)
+ // },100)
+ })
+ data.animateMarker.moveAlong(polyline.getPath(),{
+ duration: 1000/60,
+ autoRotation: true
+ });
+}