🐛 运单轨迹与实时定位WGS-84转GCJ-02后再绘制高德地图
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3642,6 +3642,7 @@ import { addressTypeOptions } from '@/option/base/common-address';
|
||||
import { packageOptions } from '@/option/business/common';
|
||||
import { formatUpdateUserName } from '@/utils/audit';
|
||||
import { getToken, isAdministrator } from '@/utils/auth';
|
||||
import { wgs84ToGcj02 } from '@/utils/coordinate';
|
||||
import { openImportDialog } from '@/utils/import-excel';
|
||||
import { normalizeMapSearchResults, searchAmapPlaceText } from '@/utils/map-search';
|
||||
import { loadMeasurementUnitOptions } from '@/utils/measurement-unit';
|
||||
@@ -6306,12 +6307,14 @@ export default {
|
||||
}
|
||||
},
|
||||
async renderWaybillLocateMap(locateInfo) {
|
||||
const longitude = Number(locateInfo?.longitude);
|
||||
const latitude = Number(locateInfo?.latitude);
|
||||
if (!Number.isFinite(longitude) || !Number.isFinite(latitude)) {
|
||||
const rawLongitude = Number(locateInfo?.longitude);
|
||||
const rawLatitude = Number(locateInfo?.latitude);
|
||||
if (!Number.isFinite(rawLongitude) || !Number.isFinite(rawLatitude)) {
|
||||
this.$message.warning('定位坐标无效,无法在地图上展示');
|
||||
return;
|
||||
}
|
||||
// LBS 返回 WGS-84,高德地图使用 GCJ-02,绘制前需转换
|
||||
const [longitude, latitude] = wgs84ToGcj02(rawLongitude, rawLatitude);
|
||||
try {
|
||||
await this.loadAmap();
|
||||
await this.$nextTick();
|
||||
@@ -6332,7 +6335,7 @@ export default {
|
||||
`<div><b>${locateInfo.vehicleNo || '车辆位置'}</b></div>`,
|
||||
locateInfo.locateTime ? `<div>时间:${locateInfo.locateTime}</div>` : '',
|
||||
locateInfo.address ? `<div>地址:${locateInfo.address}</div>` : '',
|
||||
`<div>坐标:${longitude}, ${latitude}</div>`,
|
||||
`<div>坐标:${rawLongitude}, ${rawLatitude}</div>`,
|
||||
`</div>`,
|
||||
].join('');
|
||||
this.waybillLocateInfoWindow = new window.AMap.InfoWindow({
|
||||
@@ -6359,9 +6362,17 @@ export default {
|
||||
}
|
||||
},
|
||||
async renderWaybillTrackMap(points) {
|
||||
// LBS 轨迹为 WGS-84,绘制到高德前转为 GCJ-02
|
||||
const path = (points || [])
|
||||
.map(item => [Number(item.longitude), Number(item.latitude)])
|
||||
.filter(item => Number.isFinite(item[0]) && Number.isFinite(item[1]));
|
||||
.map(item => {
|
||||
const longitude = Number(item.longitude);
|
||||
const latitude = Number(item.latitude);
|
||||
if (!Number.isFinite(longitude) || !Number.isFinite(latitude)) {
|
||||
return null;
|
||||
}
|
||||
return wgs84ToGcj02(longitude, latitude);
|
||||
})
|
||||
.filter(Boolean);
|
||||
if (!path.length) {
|
||||
this.$message.warning('轨迹坐标无效,无法在地图上展示');
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user