diff --git a/src/hjm/fence.tsx b/src/hjm/fence.tsx
index 3d1dece..7b4fe72 100644
--- a/src/hjm/fence.tsx
+++ b/src/hjm/fence.tsx
@@ -8,6 +8,8 @@ import './location.scss'
import {HjmFence} from "@/api/hjm/hjmFence/model";
import {getHjmFence} from "@/api/hjm/hjmFence";
import {Market} from "../pages/index";
+// 导入GPS坐标转换工具
+import GPS from '@/utils/gpsUtil.js';
interface Where {
latitude?: number;
longitude?: number;
@@ -42,9 +44,30 @@ const Location = () => {
// 转为多边形点数组
const points = coordPairs.map(coord => {
const [lat, lng] = coord.split(',');
+ const latitude = parseFloat(lat);
+ const longitude = parseFloat(lng);
+
+ // 确保解析后的坐标是有效数字
+ if (isNaN(latitude) || isNaN(longitude)) {
+ throw new Error(`无效坐标: ${lat}, ${lng}`);
+ }
+
+ // 转换WGS84坐标到GCJ02坐标
+ try {
+ const transformed = GPS.gcj_encrypt(latitude, longitude);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ return {
+ latitude: transformed.lat,
+ longitude: transformed.lng
+ };
+ }
+ } catch (error) {
+ console.error('围栏坐标转换错误:', error);
+ }
+
return {
- latitude: parseFloat(lat),
- longitude: parseFloat(lng)
+ latitude: latitude,
+ longitude: longitude
}
});
console.log(points,'pointspointspoints')
@@ -57,30 +80,66 @@ const Location = () => {
const reload = () => {
setScale(11)
- setLongitude(108.355702)
- setLatitude(22.857968)
+
+ // 设置初始坐标(需要转换)
+ const initialLat = 22.857968;
+ const initialLng = 108.355702;
+ try {
+ const transformed = GPS.gcj_encrypt(initialLat, initialLng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ setLongitude(transformed.lng);
+ setLatitude(transformed.lat);
+ } else {
+ setLongitude(initialLng);
+ setLatitude(initialLat);
+ }
+ } catch (error) {
+ console.error('初始坐标转换错误:', error);
+ setLongitude(initialLng);
+ setLatitude(initialLat);
+ }
+
getHjmFence(4).then(data => {
setFence(data)
const coordStr = data.points || '';
- // 使用通用函数解析坐标字符串
+ // 使用通用函数解析坐标字符串(已包含坐标转换)
const {points} = parseCoordinateString(coordStr);
console.log('解析结果 - 多边形点:', points);
setPoints(points);
setShowCircles(true)
console.log(fence,'fencefencefence')
})
+
const where: Where = {}
+ // 使用转换后的坐标
where.latitude = latitude
where.longitude = longitude
+
pageByQQMap(where).then(res => {
if (res?.count == 0) {
const arr = []
+ // 转换默认位置坐标
+ const defaultLat = 22.813371;
+ const defaultLng = 108.323885;
+ let markerLat = defaultLat;
+ let markerLng = defaultLng;
+
+ try {
+ const transformed = GPS.gcj_encrypt(defaultLat, defaultLng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ markerLat = transformed.lat;
+ markerLng = transformed.lng;
+ }
+ } catch (error) {
+ console.error('默认位置坐标转换错误:', error);
+ }
+
// @ts-ignore
arr.push({
id: 10001,
- latitude: 22.813371,
- longitude: 108.323885,
+ latitude: markerLat,
+ longitude: markerLng,
title: '当前位置',
name: '当前位置'
})
@@ -91,11 +150,31 @@ const Location = () => {
const data = res?.list;
const arr = []
data?.map((item: HjmCar) => {
+ // 转换WGS84坐标到GCJ02坐标
+ let markerLat = item.latitude;
+ let markerLng = item.longitude;
+
+ if (item.latitude && item.longitude) {
+ try {
+ const lat = Number(item.latitude);
+ const lng = Number(item.longitude);
+ if (!isNaN(lat) && !isNaN(lng) && isFinite(lat) && isFinite(lng)) {
+ const transformed = GPS.gcj_encrypt(lat, lng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ markerLat = transformed.lat;
+ markerLng = transformed.lng;
+ }
+ }
+ } catch (error) {
+ console.error('车辆坐标转换错误:', error);
+ }
+ }
+
// @ts-ignore
arr.push({
id: item.id,
- latitude: item.latitude,
- longitude: item.longitude,
+ latitude: markerLat,
+ longitude: markerLng,
label: {
content: `${item?.code}`,
color: '#000000',
diff --git a/src/hjm/trajectory/trajectory.tsx b/src/hjm/trajectory/trajectory.tsx
index c212061..a194a6d 100644
--- a/src/hjm/trajectory/trajectory.tsx
+++ b/src/hjm/trajectory/trajectory.tsx
@@ -7,6 +7,8 @@ import {HjmCar} from "@/api/hjm/hjmCar/model";
import './trajectory.scss'
import {pageHjmGpsLog} from "@/api/hjm/hjmGpsLog";
import {formatCurrentDate, getCurrentHour} from "@/utils/time";
+// 导入GPS坐标转换工具
+import GPS from '@/utils/gpsUtil.js';
/**
* 文章终极列表
@@ -102,14 +104,33 @@ const Location = () => {
Taro.showLoading({title: '加载中...'});
pageHjmGpsLog(where).then(res => {
console.log(res?.list, 'list')
- // setPoints(res?.list.map(item => {
- // console.log(item, 'item.')
- // return {
- // latitude: item.latitude,
- // longitude: item.longitude
- // }
- // }) || [])
- setHjmGpsLog(res?.list || []);
+ // 转换轨迹点坐标
+ const transformedPoints = (res?.list || []).map(item => {
+ // 转换WGS84坐标到GCJ02坐标
+ const lat = Number(item.latitude);
+ const lng = Number(item.longitude);
+
+ if (item.latitude && item.longitude &&
+ !isNaN(lat) &&
+ !isNaN(lng) &&
+ isFinite(lat) &&
+ isFinite(lng)) {
+ try {
+ const transformed = GPS.gcj_encrypt(lat, lng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ return {
+ ...item,
+ latitude: transformed.lat,
+ longitude: transformed.lng
+ };
+ }
+ } catch (error) {
+ console.error('轨迹点坐标转换错误:', error);
+ }
+ }
+ return item;
+ });
+ setHjmGpsLog(transformedPoints);
}).finally(() => {
Taro.hideLoading();
})
@@ -123,8 +144,34 @@ const Location = () => {
getHjmCarByCode(keywords).then(data => {
console.log('执行搜索', data)
setItem(data)
- setLatitude(data.latitude)
- setLongitude(data.longitude)
+
+ // 转换WGS84坐标到GCJ02坐标
+ if (data.latitude && data.longitude &&
+ !isNaN(data.latitude) &&
+ !isNaN(data.longitude) &&
+ isFinite(data.latitude) &&
+ isFinite(data.longitude)) {
+ try {
+ const lat = Number(data.latitude);
+ const lng = Number(data.longitude);
+ const transformed = GPS.gcj_encrypt(lat, lng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ setLatitude(transformed.lat);
+ setLongitude(transformed.lng);
+ } else {
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+ } catch (error) {
+ console.error('坐标转换错误:', error);
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+ } else {
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+
setKeywords(data.code)
// 获取车辆轨迹信息
getLocationRecord(data);
@@ -144,8 +191,34 @@ const Location = () => {
if (code) {
getHjmCarByCode(code).then(data => {
setItem(data)
- setLatitude(data.latitude)
- setLongitude(data.longitude)
+
+ // 转换WGS84坐标到GCJ02坐标
+ if (data.latitude && data.longitude &&
+ !isNaN(data.latitude) &&
+ !isNaN(data.longitude) &&
+ isFinite(data.latitude) &&
+ isFinite(data.longitude)) {
+ try {
+ const lat = Number(data.latitude);
+ const lng = Number(data.longitude);
+ const transformed = GPS.gcj_encrypt(lat, lng);
+ if (transformed && !isNaN(transformed.lat) && !isNaN(transformed.lng)) {
+ setLatitude(transformed.lat);
+ setLongitude(transformed.lng);
+ } else {
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+ } catch (error) {
+ console.error('坐标转换错误:', error);
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+ } else {
+ setLatitude(data.latitude);
+ setLongitude(data.longitude);
+ }
+
setKeywords(data.code)
// 获取车辆轨迹信息
getLocationRecord(data);
@@ -220,7 +293,6 @@ const Location = () => {
- {/**/}