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