From c6f298dc2f39673891eb90f219f610cdde20ef24 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期日, 15 三月 2026 20:32:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java |   23 +++++++++--------------
 1 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java
index 5c527a1..445efc7 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java
@@ -47,11 +47,6 @@
     public  List<String> findFencesContainingPoint(GeoPoint point, String collectionName, String geoFieldName) {
         MongoCollection<Document> collection = mongoTemplate.getCollection(collectionName);
         List<String> fenceIds = new ArrayList<>();
-        FindIterable<Document> documents1 = collection.find();
-        for (Document document : documents1) {
-            System.out.println(document);
-
-        }
         // 查询所有包含该点的围栏
         Bson filter = Filters.geoIntersects(geoFieldName, MongoGeoFenceUtil.toGeoJsonPoint(point.getLongitude(), point.getLatitude()));
         FindIterable<Document> documents = collection.find(filter);
@@ -95,15 +90,15 @@
      * @return 是否在围栏中
      */
     public boolean isInFence(double longitude, double latitude, String fenceId, String collectionName) {
-        // 创建GeoPoint对象
-        GeoPoint geoPoint = new GeoPoint(longitude, latitude);
-
-        // 调用MongoGeoFenceUtil的方法查询包含该点的围栏
-        List<String> fences = findFencesContainingPoint(geoPoint, collectionName, "points");
-
-        // 检查查询结果中是否包含指定的fenceId
-        return fences.contains(fenceId);
+        if (fenceId == null || fenceId.trim().isEmpty()) {
+            return false;
+        }
+        MongoCollection<Document> collection = mongoTemplate.getCollection(collectionName);
+        Bson fenceIdFilter = Filters.or(Filters.eq("fenceId", fenceId), Filters.eq("parentId", fenceId));
+        Bson geoFilter = Filters.geoIntersects("points", MongoGeoFenceUtil.toGeoJsonPoint(longitude, latitude));
+        Bson filter = Filters.and(fenceIdFilter, geoFilter);
+        return collection.find(filter).limit(1).first() != null;
     }
 
 
-}
\ No newline at end of file
+}

--
Gitblit v1.7.1