菜鸟教程小白 发表于 2022-12-12 14:59:11

ios - 谷歌地图 2 点之间的路线与多航点 swift ios


                                            <p><p>我有这段代码,但由于某种原因,它只是在 2 个点(第一个点和最后一个点)之间画了一个溃败,忽略了所有其他点,即 </p>

<p>输出:仅在 2 个标记之间路由</p>

<p>预期输出:所有标记之间的路线(5 个标记)</p>

<p>有人知道我的代码有什么问题吗? </p>

<pre><code> func getDotsToDrawRoute(positions : , completion: @escaping(_ path : GMSPath) -&gt; Void) {
    if positions.count &gt; 1 {
      let origin = positions.first
      let destination = positions.last
      var wayPoints = &#34;&#34;
      for point in positions {
            wayPoints = wayPoints.characters.count == 0 ? &#34;\(point.latitude),\(point.longitude)&#34; : &#34;\(wayPoints)|\(point.latitude),\(point.longitude)&#34;
      }
      print(&#34;this is fullPath :: \(wayPoints)&#34;)
      let request = &#34;https://maps.googleapis.com/maps/api/directions/json&#34;
      let parameters : = [&#34;origin&#34; : &#34;\(origin!.latitude),\(origin!.longitude)&#34;, &#34;destination&#34; : &#34;\(destination!.latitude),\(destination!.longitude)&#34;, &#34;wayPoints&#34; : wayPoints, &#34;stopover&#34;: &#34;true&#34;, &#34;key&#34; : kyes.google_map]
      Alamofire.request(request, method:.get, parameters : parameters).responseJSON(completionHandler: { response in
            guard let dictionary = response.result.value as?
                else {
                  return
            }
            print (&#34;route iss ::: \(dictionary[&#34;routes&#34;])&#34;)
            if let routes = dictionary[&#34;routes&#34;] as? [] {
                if routes.count &gt; 0 {
                  var first = routes.first
                  if let legs = first![&#34;legs&#34;] as? [] {
                        let fullPath : GMSMutablePath = GMSMutablePath()
                        for leg in legs {
                            if let steps = leg[&#34;steps&#34;] as? [] {
                              for step in steps {
                                    if let polyline = step[&#34;polyline&#34;] as? {
                                        if let points = polyline[&#34;points&#34;] as? String {
                                          fullPath.appendPath(path: GMSMutablePath(fromEncodedPath: points))
                                        }
                                    }
                              }

                              let polyline = GMSPolyline.init(path: fullPath)

                              polyline.path = fullPath
                              polyline.strokeWidth = 4.0
                              polyline.map = self._map                              }
                        }
                  }
                }
            }
      })
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>看看这个解决方案是否适合我</p>

<pre><code>    func drawpath(positions: ) {

    let origin = positions.first!
    let destination = positions.last!
    var wayPoints = &#34;&#34;
    for point in positions {
      wayPoints = wayPoints.characters.count == 0 ? &#34;\(point.latitude),\(point.longitude)&#34; : &#34;\(wayPoints)%7C\(point.latitude),\(point.longitude)&#34;
    }

    let url = &#34;https://maps.googleapis.com/maps/api/directions/json?origin=\(origin!.latitude),\(origin!.longitude)&amp;destination=\(destination.latitude),\(destination.longitude)&amp;mode=driving&amp;waypoints=\(wayPoints)&amp;key=KEY&#34;
    Alamofire.request(url).responseJSON { response in

      print(response.request as Any)// original URL request
      print(response.response as Any) // HTTP URL response
      print(response.data as Any)   // server data
      print(response.result as Any)   // result of response serialization

      let json = try!JSON(data: response.data!)
      let routes = json[&#34;routes&#34;][&#34;overview_polyline&#34;][&#34;points&#34;].stringValue

      let path = GMSPath.init(fromEncodedPath: routes)
      let polyline = GMSPolyline.init(path: path)
      polyline.strokeWidth = 4
      polyline.strokeColor = UIColor.red
      polyline.map = self._map
    }


}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 谷歌地图 2 点之间的路线与多航点 swift ios,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/53152848/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/53152848/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 谷歌地图 2 点之间的路线与多航点 swift ios