0

我正在尝试向 Google Elevation API 发送请求,但我已成功发送单个请求。GE API 的文档中指出,如果坐标作为由“|”分隔的列表传递,则单个请求可以包含许多坐标评估。

正如您在我的代码中看到的那样,我遵循包含以下内容的请求格式 >> 3.222,54.333 | 2.444, 66.4332 | ...

据我所知,这应该是可行的,但显然出了点问题。

这是一段代码,程序在该块内的错误点处中断。

finalStringConvertedCoordinates = processedQueryPoints.joined(separator: "|")
        let apiKey = "REDACTED"
        guard let url = URL(string: "https://maps.googleapis.com/maps/api/elevation/json?key=\(apiKey)&locations=\(finalStringConvertedCoordinates)") else {
                    print("Error: cannot create URL")
                    return
4

1 回答 1

0

尝试这样的事情,一旦你弄清楚processedQueryPoints中有什么:

        let locations = ["3.222,54.333", "2.444,66.4332"]
        let locs = locations.joined(separator: "%7C")  // <-- the important bit
        print("\n---> locs: \(locs)")
        let apiKey = "REDACTED"
        let url = URL(string: "https://maps.googleapis.com/maps/api/elevation/json?locations=\(locs)&key=\(apiKey)")
        print("---> url: \(url) \n")

编辑:从描述的字符串数组开始:

        let rawData = ["3.222","54.333", "2.444","66.4332"]
        print("\n---> rawData: \(rawData)")
        
        let pairs = stride(from: 0, to: rawData.endIndex, by: 2).map {(rawData[$0], rawData[$0.advanced(by: 1)])}
        print("\n---> pairs: \(pairs)")
        
        let locs = pairs.map{ $0 + "," + $1 }.joined(separator: "%7C")
        print("\n---> locs: \(locs)")
        
        let apiKey = "REDACTED"
        let url = URL(string: "https://maps.googleapis.com/maps/api/elevation/json?locations=\(locs)&key=\(apiKey)")
        print("---> url: \(url) \n")
于 2021-08-13T10:56:39.433 回答