经纬度统一转换成GCJ-02

This commit is contained in:
attiya 2025-04-30 10:49:35 +08:00
parent 3ca7532ed5
commit 9dd4bfed9c
2 changed files with 8 additions and 8 deletions

View File

@ -1,14 +1,13 @@
package com.cdzy.orders.uitls;
import com.cdzy.common.utils.CoordinateUtil;
import com.cdzy.orders.model.dto.res.RedisPoint;
import org.locationtech.jts.geom.*;
import org.locationtech.jts.geom.Polygon;
import org.locationtech.jts.geom.*;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.*;
import org.springframework.data.geo.Point;
import org.springframework.data.geo.*;
import org.springframework.data.redis.connection.RedisGeoCommands;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@ -261,10 +260,9 @@ public class RedisUtil {
*/
public static boolean isPointInPolygon(double lng, double lat, Polygon polygon) {
// 1. 高精度坐标转换
double[] doubles = CoordinateUtil.WGS84ToGCJ02(lng, lat);
Coordinate coord = new Coordinate(
BigDecimal.valueOf(doubles[0]).setScale(9, RoundingMode.HALF_UP).doubleValue(),
BigDecimal.valueOf(doubles[1]).setScale(9, RoundingMode.HALF_UP).doubleValue()
BigDecimal.valueOf(lng).setScale(9, RoundingMode.HALF_UP).doubleValue(),
BigDecimal.valueOf(lat).setScale(9, RoundingMode.HALF_UP).doubleValue()
);
// 2. 创建几何对象确认使用双精度

View File

@ -3,6 +3,7 @@ package com.cdzy.ebikereport.component;
import com.alibaba.fastjson2.JSONObject;
import com.cdzy.common.model.EbikeTracking;
import com.cdzy.common.model.ResGPSDto;
import com.cdzy.common.utils.CoordinateUtil;
import com.cdzy.ebikereport.enums.BitSwitch;
import com.cdzy.ebikereport.utils.BinaryUtil;
import com.cdzy.ebikereport.utils.RedisUtil;
@ -64,8 +65,9 @@ public class ReoprtHandler {
resGpsDto.setIsWheelSpin(isWheelSpin);
resGpsDto.setIsMoving(isMoving);
redisUtil.set(deviceId, resGpsDto);
redisUtil.addLocation(new Point(resGpsDto.getLongitude(), resGpsDto.getLatitude()),deviceId);
EbikeTracking ebikeTracking = new EbikeTracking(deviceId,resGpsDto.getLatitude(),resGpsDto.getLongitude());
double[] doubles = CoordinateUtil.WGS84ToGCJ02(resGpsDto.getLongitude(), resGpsDto.getLatitude());
redisUtil.addLocation(new Point(doubles[0], doubles[1]),deviceId);
EbikeTracking ebikeTracking = new EbikeTracking(deviceId,doubles[1], doubles[0]);
operateFeignClient.saveEbikeTracking(ebikeTracking);
}