作者 小范

车辆定位界面完善

@@ -31,60 +31,90 @@ @@ -31,60 +31,90 @@
31 <div id="mapContainer" style="width: 100%; height: 500px;"></div> 31 <div id="mapContainer" style="width: 100%; height: 500px;"></div>
32 </div> 32 </div>
33 </template> 33 </template>
34 -<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.7.6/proj4.js"></script>  
35 <script> 34 <script>
36 import AMapLoader from '@amap/amap-jsapi-loader'; 35 import AMapLoader from '@amap/amap-jsapi-loader';
37 - import {selectVehicle} from '../../api/consigner/vehicle';  
38 - import {list} from "../../api/consigner/check"; 36 + import { selectVehicle } from '../../api/consigner/vehicle';
39 37
40 export default { 38 export default {
41 name: 'MapComponent', 39 name: 'MapComponent',
42 data() { 40 data() {
43 return { 41 return {
44 mapInstance: null, 42 mapInstance: null,
45 - queryInfo:{  
46 - vno:'',  
47 - vnocolor:'' 43 + queryInfo: {
  44 + vno: '',
  45 + vnocolor: ''
48 } 46 }
49 }; 47 };
50 }, 48 },
51 - methods:{ 49 + methods: {
52 getList() { 50 getList() {
53 - const _this = this 51 + const _this = this;
54 selectVehicle(this.queryInfo).then((response) => { 52 selectVehicle(this.queryInfo).then((response) => {
55 - const res = response.data  
56 - //console.log(response.data) 53 + const res = response.data;
57 if (res.code !== '200') { 54 if (res.code !== '200') {
58 - return _this.$message.error('获取消息收发记录,失败!') 55 + return _this.$message.error('获取车辆位置失败!');
  56 + }
  57 + if(res.data.data!=='' && res.data.data!=null){
  58 + // 获取车辆位置信息
  59 + const vehicle = res.data.data.firstVcl;
  60 + // 在获取车辆位置成功的部分,创建信息窗口或者自定义标记
  61 + const markerContent = document.createElement('div');
  62 + markerContent.innerHTML = `
  63 + <div class="rounded-corner" STYLE="width: 200px;background-color: rgba(255,255,255,0.7);text-align: center">
  64 + <p>车牌号:${vehicle.vno}</p >
  65 + <p>已行驶距离:${vehicle.runDistance}公里</p >
  66 + <p>剩余距离:${vehicle.remainDistance}公里</p >
  67 + </div>
  68 + `;
  69 + if (vehicle.lon && vehicle.lat) {
  70 + const lon = parseFloat(vehicle.lon) / 600000.0; // 将经度字符串转换为数值并除以 600000.0
  71 + const lat = parseFloat(vehicle.lat) / 600000.0; // 将纬度字符串转换为数值并除以 600000.0
  72 + //const coords = wgs84togcj02(lon, lat);
  73 + // 添加车辆位置标记
  74 + const marker = new AMap.Marker({
  75 + position: [lon, lat],
  76 + map: _this.mapInstance,
  77 + content: markerContent
  78 + });
  79 + const defaultMarker = new AMap.Marker({
  80 + position: [lon, lat],
  81 + map: _this.mapInstance,
  82 + });
  83 + // 移动地图中心到车辆位置
  84 + _this.mapInstance.setCenter([lon, lat]);
  85 + _this.$message.success('获取车辆位置成功!');
  86 + } else {
  87 + _this.$message.warning('车辆位置信息不完整!');
  88 + }
  89 + }else{
  90 + return _this.$message.error('无相关车辆信息返回');
59 } 91 }
60 - // 获取列表数据  
61 - console.log(res.data.data.firstVcl)  
62 - _this.$message.success('获取消息收发记录,成功!')  
63 }).catch(error => { 92 }).catch(error => {
64 - // 关闭加载  
65 - _this.$message.error(error.toString())  
66 - }) 93 + _this.$message.error('获取车辆位置失败:' + error.toString());
  94 + });
  95 + },
  96 + initMap() {
  97 + AMapLoader.load({
  98 + key: 'fdb27c13681d084e85ff8457b5cbe540',
  99 + version: '2.0',
  100 + plugins: [], // 可以加载地图插件,比如定位、地图工具等
  101 + }).then((AMap) => {
  102 + this.mapInstance = new AMap.Map('mapContainer', {
  103 + zoom: 10,
  104 + center: [116.397428, 39.90923], // 设置地图中心点
  105 + });
  106 + }).catch((err) => {
  107 + console.error(err);
  108 + });
67 }, 109 },
68 }, 110 },
69 mounted() { 111 mounted() {
70 - AMapLoader.load({  
71 - key: 'fdb27c13681d084e85ff8457b5cbe540',  
72 - version: '2.0',  
73 - plugins: [], // 可以加载地图插件,比如定位、地图工具等  
74 - }).then((AMap) => {  
75 - this.mapInstance = new AMap.Map('mapContainer', {  
76 - zoom: 10,  
77 - center: [116.397428, 39.90923], // 设置地图中心点  
78 - });  
79 - }).catch((err) => {  
80 - console.error(err);  
81 - }); 112 + this.initMap();
82 }, 113 },
83 }; 114 };
84 </script> 115 </script>
85 116
86 <style scoped> 117 <style scoped>
87 - /* 可以添加一些样式来设置地图容器的大小等 */  
88 .my-text-area .prepand{ 118 .my-text-area .prepand{
89 float: left; 119 float: left;
90 width:89px; 120 width:89px;
@@ -94,10 +124,17 @@ @@ -94,10 +124,17 @@
94 } 124 }
95 </style> 125 </style>
96 <style> 126 <style>
97 - .my-text-area .el-textarea__inner{  
98 - min-height: 28px;  
99 - height: 28px;  
100 - border-bottom-left-radius: 0;  
101 - border-top-left-radius: 0;  
102 - } 127 + .my-text-area .el-textarea__inner{
  128 + min-height: 28px;
  129 + height: 28px;
  130 + border-bottom-left-radius: 0;
  131 + border-top-left-radius: 0;
  132 + }
  133 + .rounded-corner {
  134 + border-radius: 10px; /* 设置圆角的半径为10像素 */
  135 + background-color: #f0f0f0; /* 背景颜色 */
  136 + padding: 10px; /* 内边距 */
  137 + margin: 10px; /* 外边距 */
  138 + box-shadow: 0 0 5px #ddd; /* 盒子阴影效果 */
  139 + }
103 </style> 140 </style>