From f3f7474c25ea8973022636300f765bf2ef5649ec Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Tue, 13 May 2025 14:42:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=97=E6=B3=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdzy/ebikeoperate/utils/RedisUtil.java | 4 ++- .../java/com/cdzy/orders/uitls/RedisUtil.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/RedisUtil.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/RedisUtil.java index 511e5a90..74b714e4 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/RedisUtil.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/RedisUtil.java @@ -321,8 +321,10 @@ public class RedisUtil { Polygon polygon = parsePolygonFromWKT(polygonFromWKT); return isPointInPolygon(lng, lat, polygon); } + + /** - * 判断坐标点是否在附近站点区内 + * 判断坐标点是否在附近站点区内并返回站点id * @param lng 经度 * @param lat 纬度 * @return true-在内部;false-在外部或边界上(根据业务需求调整) diff --git a/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java b/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java index ff6a36f8..1d6bf599 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java @@ -253,6 +253,35 @@ public class RedisUtil { return isPointInPolygon(lng, lat, polygon); } + + + /** + * 判断坐标点是否在附近站点区内并返回站点id + * @param lng 经度 + * @param lat 纬度 + * @return true-在内部;false-在外部或边界上(根据业务需求调整) + */ + public Long isPointInSiteWithSiteRegionId(double lng, double lat,Long areaId) { + //查询附近停车区 + List nearbyParking = findNearbyParking(lng, lat,areaId); + if (nearbyParking.isEmpty()) { + return null; + } + //获取第一个大致包含该点位的停车区 + String regionId = checkPointInArea(lng, lat, nearbyParking,areaId); + if (regionId == null) { + return null; + } + //进行更精确的判断 + String polygonFromWKT = getPolygonFromWKT(areaId,regionId,"parking_area:meta:"); + Polygon polygon = parsePolygonFromWKT(polygonFromWKT); + boolean inPolygon = isPointInPolygon(lng, lat, polygon); + if (inPolygon) { + return Long.valueOf(regionId); + } + return null; + } + /** * 判断坐标点是否在附近运营区内 * @param lng 经度