liujie
2026-02-12 7a78cb97f96eea330dff3b222eff8d6dafc5e28a
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/mango/VehiclePositionService.java
@@ -14,10 +14,10 @@
@Service
public class VehiclePositionService {
    @Resource
    private MongoTemplate mongoTemplate;
    /**
     * 查询附近指定距离内且状态正常的车辆
     * @param longitude 经度
@@ -28,27 +28,26 @@
    public List<VehiclePosition> findAvailableVehiclesNearby(double longitude,
                                                             double latitude,
                                                             double distanceInMeters,int num) {
        // 创建查询点
        Point referencePoint = new Point(longitude, latitude);
        // 设置最大距离(MongoDB使用公里或米,这里转换为公里)
        distanceInMeters = distanceInMeters / 1000;
        try {
            // 创建查询点
            Point referencePoint = new Point(longitude, latitude);
        // 构建查询条件
        Query query = new Query();
        query.addCriteria(Criteria.where("point")
                .near(referencePoint)
                .maxDistance(distanceInMeters));
        query.addCriteria(Criteria.where("status").is(1)); // 运营中
        query.addCriteria(Criteria.where("state").is(0));  // 空闲中
        // 可以添加排序,按距离排序
         query.with(Sort.by(Sort.Direction.ASC, "point"));
//        // 可以限制返回数量
//         query.limit(num);
        return mongoTemplate.find(query, VehiclePosition.class);
            // 构建查询条件
            Query query = new Query();
            // 地理位置查询
            query.addCriteria(Criteria.where("point")
                    .near(referencePoint)
                    .maxDistance(distanceInMeters));
            query.with(Sort.by(Sort.Direction.ASC, "point"));
            return mongoTemplate.find(query, VehiclePosition.class);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }