我正在使用Mapquest directions API,我的目标是在许多地图点(3个或更多)之间创建一条路线。
以下是“ to”参数of the endpoint that's used to fetch a route for a given set of points的API规范(对应于目标):
当输入格式为键/值对时,即路由请求的结束位置。可以提供多个to参数。这仅用于单行地址。
有关如何正确设置所有格式(包括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
-写入字符串的结尾,随后传递到http.get
。我错过的是URI
照顾字符的转义,当SDK已经为我提供URI
类时,我自己写这样的东西似乎是完全不合适的。
答案 0 :(得分:1)
我不知道您的阅读是否正确,但是我可以说如何多次使用相同的查询参数创建URI。
Uri.parse
函数确实多次接受相同的名称,但是您正在尝试创建字符串,因此没有用
要从原始数据创建URI,构造函数Uri
有一个queryParameters
参数,该参数接受一个Map<String, dynamic>
,其中值必须是单个String
或{ {1}}。因此,就您而言:
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
getter返回一个queryParameters
,每个名字只能有一次。您可以改用Map<String, String>
吸气剂。