You can use the new MKMapItem
class for iOS 6. See Apple API docs here.
Basically, you'll use something like this if routing to destination coordinates ( destCoordinate
):
MKPlacemark* place = [[MKPlacemark alloc] initWithCoordinate: destCoordinate addressDictionary: nil]; MKMapItem* destination = [[MKMapItem alloc] initWithPlacemark: place]; destination.name = @"Name Here!"; NSArray* items = [[NSArray alloc] initWithObjects: destination, nil]; NSDictionary* options = [[NSDictionary alloc] initWithObjectsAndKeys: MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsDirectionsModeKey, nil]; [MKMapItem openMapsWithItems: items launchOptions: options];
To support both iOS 6+ and pre iOS 6 in the same code, I would recommend using something like this code that Apple has on the MKMapItem
API document page:
Class itemClass = [MKMapItem class]; if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) { // iOS 6 MKMapItem available } else { // use pre iOS 6 technique }
Suppose your Xcode Base SDK is iOS 6 (or Latest iOS ).
In this other answer, I propose a reliable technique for iOS 5.1 and below.
Nate Sep 22 2018-12-12T00: 00Z
source share