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
相关产品推荐
相关产品推荐

