Swift 2.0 .
I have not yet found a comprehensive answer.
static func openGoogleMapsNavigation(latitude: Double, longitude: Double, destinationName: String, completion: ((error: NSError?) -> (Void))?) { let directionRequest: MKDirectionsRequest = MKDirectionsRequest() let destination = Utils.createMapItem(name: destinationName, latitude: latitude, longitude: longitude) directionRequest.source = MKMapItem.mapItemForCurrentLocation() directionRequest.destination = destination directionRequest.transportType = MKDirectionsTransportType.Automobile directionRequest.requestsAlternateRoutes = true let directions: MKDirections = MKDirections(request: directionRequest) directions.calculateDirectionsWithCompletionHandler { (response: MKDirectionsResponse?, error: NSError?) -> Void in if error == nil { destination.openInMapsWithLaunchOptions([ MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving]) } completion?(error: error) } }
Where I have this utility method:
static func createMapItem(name name: String, latitude: Double, longitude: Double) -> MKMapItem { let coordinates = CLLocationCoordinate2DMake(latitude, longitude) let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) let mapItem = MKMapItem(placemark: placemark) mapItem.name = name return mapItem }
source share