我正在使用Mapquest directions API,我的目标是在一堆地图点(3和更多)之间创建一条路线。
以下是“to”参数of the endpoint that's used to fetch a route for a given set of points的API规范(它对应于目标):
当输入格式是键/值对时,路径请求的结束位置。可以提供多个参数。这仅用于单行地址。
请参阅位置文档,了解如何正确地以所有格式(包括JSON和XML)格式化位置。
AFAIK意味着可以为查询指定多个“to”参数,例如“http://www.mapquestapi.com/directions/v2/route?from=40.65,73.95&to=40.87,-73.85&to=40.70,-73.56。我对此是对的吗?
因此,假设我理解规范正确,我需要构建一个适当的URI
实例,该实例将被分派到http的库get
方法。问题是它在构造函数中接收到Map<String, String
的查询参数,而map表示唯一性。如何使用URI
类构造这样的请求?
我试图通过检索URI
实例的字符串表示而不指定to
键值对,并在字符串的末尾写入连接的to
-s,然后传递给http.get
来尝试解决方法。我错过的是URI
关注角色的逃避,当SDK已经为我提供URI
类时,自己编写这样的东西似乎是完全不合适的。
我不知道你的阅读是否正确,但我可以说如何多次创建一个具有相同查询参数的URI。
Uri.parse
函数不止一次接受相同的名称,但是你试图创建字符串,所以这没用
要从原始数据创建URI,构造函数Uri
有一个queryParameters
参数,它接受一个Map<String, dynamic>
,其值必须是单个String
或Iterable<String>
。所以,在你的情况下:
var request = Uri.parse("http://www.mapquestapi.com/directions/v2/route")
.resolveUri(Uri(queryParameters: {
"from": "40.65,73.95",
"to": ["40.87,-73.85", "40.70,-73.56"],
}));
如果您的查询部分多次包含相同的名称,则需要在Uri
类上使用特殊函数来读取这些查询参数。默认的queryParameters
getter返回一个Map<String, String>
,每个名称只能有一次。您可以使用queryParametersAll
getter代替。