bug修复:运营区判断

This commit is contained in:
attiya 2025-07-31 16:30:34 +08:00
parent 265ab3517c
commit 9aef7b04b8
2 changed files with 3 additions and 24 deletions

View File

@ -118,29 +118,6 @@ public class RedisUtil {
.max().orElse(0)*100;
}
/**
* 判断点是否在多边形内
* @param point 待判断点
* @param polygon 多边形顶点
* @return 是否在多边形内
*/
public static boolean isPointInPolygon(Point point, List<Point> polygon) {
double x = point.getX();
double y = point.getY();
boolean inside = false;
for (int i = 0, j = polygon.size() - 1; i < polygon.size(); j = i++) {
double xi = polygon.get(i).getX();
double yi = polygon.get(i).getY();
double xj = polygon.get(j).getX();
double yj = polygon.get(j).getY();
boolean intersect = ((yi > y) != (yj > y))
&& (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
if (intersect) inside = !inside;
}
return inside;
}
/**
* 删除 Redis

View File

@ -39,6 +39,8 @@ public class RedisUtil {
private static final WKTReader WKT_READER = new WKTReader(GEOMETRY_FACTORY);
private static final double DEGREE_TO_METERS = 111320.0;
@Autowired
public RedisUtil(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
@ -396,7 +398,7 @@ public class RedisUtil {
Geometry bufferedPolygon = polygon.buffer(0.00000899);
// 4. 结合距离判断
return bufferedPolygon.covers(point) || polygon.distance(point) < 1.0;
return bufferedPolygon.covers(point) || polygon.distance(point) * DEGREE_TO_METERS < 1.0;
}
/**