Opens apple maps app from ios app with directions Opens apple maps app from ios app with directions ios ios

Opens apple maps app from ios app with directions


Here is code to open Map app with directions:

Objective-C Code

NSString* directionsURL = [NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",self.mapView.userLocation.coordinate.latitude, self.mapView.userLocation.coordinate.longitude, mapPoint.coordinate.latitude, mapPoint.coordinate.longitude];if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) {    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL] options:@{} completionHandler:^(BOOL success) {}];} else {    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL]];}

with the mapPoint is where you want to direction to.

Swift3 or later

let directionsURL = "http://maps.apple.com/?saddr=35.6813023,139.7640529&daddr=35.4657901,139.6201192"guard let url = URL(string: directionsURL) else {    return}if #available(iOS 10.0, *) {    UIApplication.shared.open(url, options: [:], completionHandler: nil)} else {    UIApplication.shared.openURL(url)}

Note that saddr, daddr is urlencoded string of location name or location coordinate (about encode URL look at here).

directionsURL example:

// directions with location coordinate"http://maps.apple.com/?saddr=35.6813023,139.7640529&daddr=35.4657901,139.6201192"// or directions with location name"http://maps.apple.com/?saddr=Tokyo&daddr=Yokohama"// or directions from current location to destination location"http://maps.apple.com/?saddr=Current%20Location&daddr=Yokohama"

More options parameters (like transport type, map type ...) look at here


You can open maps with direction using this code : (assuming your id< MKAnnotation > class has a CLLocationCoordinate2D public property named "coordinate")

MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:[annotation coordinate] addressDictionary:nil];MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];[mapItem setName:"WhereIWantToGo"]];NSDictionary *options = @{MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving};[mapItem openInMapsWithLaunchOptions:options];

You can also change the button, actually you are using a standard style button :

[UIButton buttonWithType:UIButtonTypeDetailDisclosure];

But you can alloc your custom button with an image or a label :

[[UIButton alloc] initWithImage:[UIImage imageNamed:"directionIcon.png"]];


Here is the working code for showing directions on Apple map. It'll work for current place to your destination place and you just need to pass lat & long of destination place.

double destinationLatitude, destinationLongitude;destinationLatitude=// Latitude of destination place.destinationLongitude=// Longitude of destination place.Class mapItemClass = [MKMapItem class];if (mapItemClass && [mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]){    // Create an MKMapItem to pass to the Maps app    CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(destinationLatitude,destinationLongitude);    MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil];    MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];    [mapItem setName:@"Name/text on destination annotation pin"];    // Set the directions mode to "Driving"    // Can use MKLaunchOptionsDirectionsModeDriving instead    NSDictionary *launchOptions = @{MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving};    // Get the "Current User Location" MKMapItem    MKMapItem *currentLocationMapItem = [MKMapItem mapItemForCurrentLocation];    // Pass the current location and destination map items to the Maps app    // Set the direction mode in the launchOptions dictionary    [MKMapItem openMapsWithItems:@[currentLocationMapItem, mapItem] launchOptions:launchOptions];}

Also, share me here, if notice any issue or we need to find out another way to done it.