Google Maps iOS SDK, Getting Directions between 2 locations

前端 未结 11 1289
栀梦
栀梦 2020-12-02 07:52

While I am using Google Maps SDK, I am trying to get driving direction between two locations on iOS. I know we can do this using two methods:-

1.) Using URL Scheme,

11条回答
  •  -上瘾入骨i
    2020-12-02 08:36

    Using Swift I definitely solved in this way.
    My purpose was finding distance between two coordinates:

    import AFNetworking 
    
    /**
     Calculate distance between two valid coordinates
    
     - parameter origin:      origin coordinates
     - parameter destination: destination coordinates
     - parameter completion:  completion callback
     */
    func calculateDistance(origin origin: CLLocation, destination: CLLocation, completion: (distance: Double?) -> Void) {
    
        let service = "https://maps.googleapis.com/maps/api/directions/json"
        let originLat = origin.coordinate.latitude
        let originLong = origin.coordinate.longitude
        let destLat = destination.coordinate.latitude
        let destLong = destination.coordinate.longitude
        let urlString = "\(service)?origin=\(originLat),\(originLong)&destination=\(destLat),\(destLong)&mode=driving&units=metric&sensor=true&key="
        let directionsURL = NSURL(string: urlString)
    
        let request = NSMutableURLRequest(URL: directionsURL!)
    
        request.HTTPMethod = "GET"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")
        let operation = AFHTTPRequestOperation(request: request)
        operation.responseSerializer = AFJSONResponseSerializer()
    
        operation.setCompletionBlockWithSuccess({ (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in
    
            if let result = responseObject as? NSDictionary {
                if let routes = result["routes"] as? [NSDictionary] {
                    if let lines = routes[0]["overview_polyline"] as? NSDictionary {
                        if let points = lines["points"] as? String {
                            let path = GMSPath(fromEncodedPath: points)
                            let distance = GMSGeometryLength(path)
                            print("wow \(distance / 1000) KM")
    
                        }
                    }
                }
            }
            }) { (operation: AFHTTPRequestOperation!, error: NSError!)  -> Void in
                print("\(error)")
        }
    
        operation.start()
    
    }
    

提交回复
热议问题