Ön iOS 6
Sokak adresi veya yere oradan rota sizi, hiç Maps Geçerli konum bilgisini almak için Çekirdek Konum kullanmak gerekir, ama bu enlem / boylam çiftiyle, alabilirsiniz. böylece gibi:
CLLocationCoordinate2D currentLocation = [self getCurrentLocation];
// this uses an address for the destination. can use lat/long, too with %f,%f format
NSString* address = @"123 Main St., New York, NY, 10001";
NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",
currentLocation.latitude, currentLocation.longitude,
[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
Açıkça mevcut konumunu bulmak için CoreLocation kullanmaktan kaçının ve kullanmak istediğiniz istiyoruz Son olarak, @"http://maps.google.com/maps?saddr=Current+Location&daddr=%@"bunun yerine url, sonra ben aşağıdaki yorum sağlanan bu bağlantıyı görmek yerelleştirilmesine nasıl Güncel + Konum dize. Ancak, başka bir belgesiz özelliği yararlanmakta olup, ve Jason McCreary aşağıda işaret ettiği gibi, bu gelecekteki sürümlerde güvenilir çalışmayabilir.
iOS 6 için Güncelleştirme
Başlangıçta, Haritalar , Google haritalar kullanılır, ama şimdi, Apple ve Google ayrı haritalar uygulamanız yok.
1) Google Maps uygulamasını kullanarak rota isterseniz, kullanmak comgooglemaps URL şemasını :
NSString* url = [NSString stringWithFormat: @"comgooglemaps://?daddr=%@&directionsmode=driving",
[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
BOOL opened = [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
2) Elma Maps kullanmak için, yeni kullanabilirsiniz MKMapItemiOS 6 için sınıf buraya Apple API docs gör
Temelde, böyle bir şey kullanır, hedef yönlendirme eğer koordinatlar ( latlong):
MKPlacemark* place = [[MKPlacemark alloc] initWithCoordinate: latlong 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];
Aynı kodunda hem iOS 6+ ve ön iOS 6 desteklemek amacıyla, Apple üzerindeki bu kodu gibi bir şey kullanarak öneriyoruz MKMapItemAPI doc sayfa:
Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
// iOS 6 MKMapItem available
} else {
// use pre iOS 6 technique
}
Bu Xcode Baz SDK iOS 6 (ya da olduğunu varsaymak olacaktır Son iOS ).