You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成OpenRouteService API:如何传入avoid_polygons参数?

在Flutter中使用open_route_service包传入avoid_polygons参数规避指定区域

要传入avoid_polygons参数规避指定区域,你需要按照ORS API的要求构造多边形坐标数组,然后直接在directionsMultiRouteCoordsPost方法中添加对应参数即可,具体操作如下:

  • 构造规避区域的多边形坐标
    定义一个由ORSCoordinate组成的列表代表闭合多边形,如果要规避多个区域,就传入多个这样的子列表。注意多边形需要闭合,建议最后一个点和第一个点保持一致,确保区域是封闭状态。

  • 修改原有代码,传入参数
    在你的路线请求方法中,添加avoidPolygons参数,将构造好的多边形数组传进去即可。

以下是完整的示例代码:

// 定义要规避的多边形区域(示例:一个矩形封闭区域)
final List<List<ORSCoordinate>> avoidPolygons = [
  [
    ORSCoordinate(latitude: 39.9042, longitude: 116.4074),
    ORSCoordinate(latitude: 39.9042, longitude: 116.4174),
    ORSCoordinate(latitude: 39.8942, longitude: 116.4174),
    ORSCoordinate(latitude: 39.8942, longitude: 116.4074),
    ORSCoordinate(latitude: 39.9042, longitude: 116.4074), // 闭合点
  ]
];

// 获取带规避区域的路线数据
final List routeCoordinates = await openrouteservice.directionsMultiRouteCoordsPost(
  coordinates: [
    ORSCoordinate(latitude: position.latitude, longitude: position.longitude),
    ORSCoordinate(latitude: lat, longitude: lon),
  ],
  profileOverride: profileOverride,
  avoidPolygons: avoidPolygons, // 传入规避区域参数
);

额外注意:

  • 多边形坐标的格式要和起点、终点保持一致(latitude在前,longitude在后)
  • 若需规避多个独立区域,在avoidPolygons数组中添加多个子列表即可,每个子列表对应一个多边形
  • 多边形的坐标点密度会影响路线规划的精度,可根据实际需求调整

内容的提问来源于stack exchange,提问作者Kendaichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:32:17