我正在使用Mapquest 方向 API,我的目标是在一堆地图点(3 个或更多)之间创建一条路线。
以下是端点“to”参数的 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参数,该参数接受 a 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"],
}));
Run Code Online (Sandbox Code Playgroud)
如果您的查询部分多次包含相同的名称,那么您需要在类上使用特殊函数Uri来读取这些查询参数。默认queryParametersgetter 返回 a Map<String, String>,每个名称只能有一次。您可以使用queryParametersAllgetter 来代替。
| 归档时间: |
|
| 查看次数: |
3072 次 |
| 最近记录: |