正在显示
2 个修改的文件
包含
111 行增加
和
0 行删除
@@ -23,3 +23,5 @@ export const DoneTask = params => { return http.post(`${baseServiceURL}/map/loca | @@ -23,3 +23,5 @@ export const DoneTask = params => { return http.post(`${baseServiceURL}/map/loca | ||
23 | //根据用户查询所属出勤车辆 | 23 | //根据用户查询所属出勤车辆 |
24 | export const selectNameList = params => { return axios.get(`${baseServiceURL}/map/location/selectNameList`, { params: params }); }; | 24 | export const selectNameList = params => { return axios.get(`${baseServiceURL}/map/location/selectNameList`, { params: params }); }; |
25 | 25 | ||
26 | +//多车定位 | ||
27 | +export const queryMulVel = params => { return axios.get(`${baseServiceURL}/map/location/queryMulVel`, { params: params }); }; |
src/views/deploy/multiple.vue
0 → 100644
1 | +<template> | ||
2 | + <div id="mapContainer"></div> | ||
3 | +</template> | ||
4 | + | ||
5 | +<script> | ||
6 | + import AMapLoader from '@amap/amap-jsapi-loader'; | ||
7 | + import {queryMulVel} from '../../api/consigner/vehicle'; | ||
8 | + | ||
9 | + export default { | ||
10 | + data() { | ||
11 | + return { | ||
12 | + mapInstance: null, | ||
13 | + markers:[] | ||
14 | + }; | ||
15 | + }, | ||
16 | + methods: { | ||
17 | + fetchDataAndUpdateMap() { | ||
18 | + // 请求后端数据 | ||
19 | + queryMulVel().then((response) => { | ||
20 | + const res = response.data; | ||
21 | + const firstVcl = res.data.data.firstVcl; // 获取首个车辆信息 | ||
22 | + const others = res.data.data.others; // 获取其他车辆信息 | ||
23 | + | ||
24 | + // 清除之前的标记 | ||
25 | + this.markers.forEach(marker => { | ||
26 | + marker.setMap(null); | ||
27 | + }); | ||
28 | + this.markers = []; | ||
29 | + | ||
30 | + // 添加首个车辆标记 | ||
31 | + if (firstVcl && firstVcl.lon && firstVcl.lat) { | ||
32 | + const marker = new AMap.Marker({ | ||
33 | + position: [firstVcl.lon / 600000.0, firstVcl.lat / 600000.0], | ||
34 | + map: this.mapInstance, | ||
35 | + title: firstVcl.vno, | ||
36 | + label: { | ||
37 | + content: firstVcl.vno, | ||
38 | + offset: new AMap.Pixel(0, -20) // 偏移量,使标题显示在标记的上方 | ||
39 | + } | ||
40 | + }); | ||
41 | + this.markers.push(marker); | ||
42 | + } | ||
43 | + if (others) { | ||
44 | + others.forEach(vehicle => { | ||
45 | + if (vehicle.lon && vehicle.lat) { | ||
46 | + const marker = new AMap.Marker({ | ||
47 | + position: [vehicle.lon / 600000.0, vehicle.lat / 600000.0], | ||
48 | + map: this.mapInstance, | ||
49 | + title: vehicle.vno, | ||
50 | + label: { | ||
51 | + content: vehicle.vno, | ||
52 | + offset: new AMap.Pixel(0, -20) // 偏移量,使标题显示在标记的上方 | ||
53 | + } | ||
54 | + }); | ||
55 | + this.markers.push(marker); | ||
56 | + } | ||
57 | + }); | ||
58 | + } | ||
59 | + // 自动调整地图视野,确保所有标记都可见 | ||
60 | + /*if (this.markers.length > 0) { | ||
61 | + const bounds = new AMap.Bounds(); | ||
62 | + this.markers.forEach(marker => { | ||
63 | + bounds.extend(marker.getPosition()); | ||
64 | + }); | ||
65 | + this.mapInstance.setBounds(bounds); | ||
66 | + }*/ | ||
67 | + if(firstVcl && firstVcl.lon && firstVcl.lat){ | ||
68 | + this.mapInstance.setCenter([firstVcl.lon / 600000.0,firstVcl.lat / 600000.0]) | ||
69 | + } | ||
70 | + }).catch(error => { | ||
71 | + console.error('Failed to fetch data:', error); | ||
72 | + }); | ||
73 | + } | ||
74 | + }, | ||
75 | + mounted() { | ||
76 | + AMapLoader.load({ | ||
77 | + key: 'fdb27c13681d084e85ff8457b5cbe540', | ||
78 | + version: '2.0', | ||
79 | + plugins: [], | ||
80 | + }).then((AMap) => { | ||
81 | + this.mapInstance = new AMap.Map('mapContainer', { | ||
82 | + zoom: 5, | ||
83 | + center: [116.397428, 39.90923], // 默认中心点位置 | ||
84 | + //viewMode: '3D', // 使用3D视图 | ||
85 | + //showIndoorMap: false, | ||
86 | + //showLabel: false, | ||
87 | + // mapStyle: 'amap://styles/dark', | ||
88 | + //mapStyle: 'amap://styles/fresh', | ||
89 | + }); | ||
90 | + | ||
91 | + // 首次加载数据并更新地图 | ||
92 | + this.fetchDataAndUpdateMap(); | ||
93 | + | ||
94 | + // 启动定时器,每10分钟刷新一次数据并更新地图 | ||
95 | + setInterval(() => { | ||
96 | + this.fetchDataAndUpdateMap(); | ||
97 | + }, 10 * 60 * 1000); | ||
98 | + }).catch((err) => { | ||
99 | + console.error('Failed to load AMap:', err); | ||
100 | + }); | ||
101 | + }, | ||
102 | + }; | ||
103 | +</script> | ||
104 | +<style> | ||
105 | + #mapContainer { | ||
106 | + width: 100%; | ||
107 | + height: 100vh; | ||
108 | + } | ||
109 | +</style> |
-
请 注册 或 登录 后发表评论