0
我正在尝试构建谷歌矩阵服务的请求,它将返回原点和目的地之间的距离。谷歌矩阵 - 起点和目的地之间的距离计数
以下:Google Docs
无法弄清楚如何建立正确的请求。
SUCCESS: {
"destination_addresses" = (
);
"origin_addresses" = (
);
rows = (
);
status = "INVALID_REQUEST";
}
https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&destinations%5B%5D=30.37577%2C-81.7837&destinations%5B%5D=26.89648%2C-82.00874&destinations%5B%5D=30.48638%2C-84.42159&destinations%5B%5D=35.11241%2C-80.95421&destinations%5B%5D=33.82343%2C-84.12118&destinations%5B%5D=33.67012%2C-78.93803&destinations%5B%5D=39.87034%2C-82.94822&destinations%5B%5D=42.14669%2C-87.83312&destinations%5B%5D=42.65981%2C-84.55101&destinations%5B%5D=39.87016%2C-82.9482&destinations%5B%5D=39.86784%2C-82.94884&destinations%5B%5D=39.87014%2C-82.94824&destinations%5B%5D=39.87021%2C-82.94826&destinations%5B%5D=42.67464%2C-82.83249&destinations%5B%5D=39.87025%2C-82.94812&destinations%5B%5D=39.87049%2C-82.94807&destinations%5B%5D=39.87057%2C-82.94829&destinations%5B%5D=40.43237%2C-74.48872&destinations%5B%5D=39.96912%2C-82.99415&destinations%5B%5D=40.44534%2C-74.41769&destinations%5B%5D=40.4453%2C-74.41779&destinations%5B%5D=41.28482%2C-72.93002&destinations%5B%5D=40.44524%2C-74.41776&destinations%5B%5D=40.44559%2C-74.41811&destinations%5B%5D=42.12788%2C-75.97026&destinations%5B%5D=40.44576%2C-74.41788&destinations%5B%5D=40.69494%2C-74.09928&destinations%5B%5D=40.76857%2C-73.73745&destinations%5B%5D=40.4856%2C-74.39982&destinations%5B%5D=30.26164%2C-98.8715&destinations%5B%5D=39.95258%2C-82.90484&destinations%5B%5D=32.69126%2C-96.24597&destinations%5B%5D=29.48223%2C-98.34786&destinations%5B%5D=32.82934%2C-97.03087&destinations%5B%5D=32.8292%2C-97.03081&key=NOPE_THATS_MY_KEY&origins=37.6724723880042%2C-90.4441829064476
我打造的目的地数组的方式:
func createDestinationsArray(annotations: [MyAnnotation]) -> [String] {
var destinations: [String] = []
var destination: String!
for annotation in annotations {
destination = "\(annotations.lat),\(annotations.lon)"
destinations.append(destination)
}
return destinations
}
和请求:
let queue = DispatchQueue(label: "com.cnoon.distance-queue", qos: .utility, attributes: .concurrent)
Alamofire.request(url, method: .get, parameters: ["origins" : origins, "destinations" : destinations, "key" : apiKey]).response(queue: queue, responseSerializer: DataRequest.jsonResponseSerializer(), completionHandler: { response in
...
})
在此先感谢!
好的,所以最好的解决方案是创建一个字符串,而不是数组?因为对于距离数组中的每个索引,它将添加到请求目标....目标...等等?像现在一样? – noname
是的,Alamofire对数组的编码方式与Google地图所期望的不同。而且,除了请求之外,您不需要该字符串数组,因此从createDestinationsArray函数生成并返回String本身也更有效。 –
较短的版本:'return annotations.map({return“\($ 0.latitude),\($ 0.longitude)”})。joined(separator:“|”)'。将func返回类型更改为'String',而不是'[String]' – Scriptable