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 @@ - + + + @@ -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 + }); +}