Pre iOS 6
Musíte použít jádra Umístění získat aktuální polohu, ale s tím lat / dlouhý pár, můžete získat mapy směrovat vás odtamtud do ulice nebo místa. Jako tak:
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 konečně, pokud chcete, aby se zabránilo používání CoreLocation explicitně zjistit aktuální polohu, a chcete použít @"http://maps.google.com/maps?saddr=Current+Location&daddr=%@"namísto URL, pak tento odkaz, že bych stanovené v komentáři níže , jak lokalizovat aktuální + Poloha řetězec. Vy jste však využívají jiné nezdokumentované funkce, a jak Jason McCreary poukazuje níže, nemusí fungovat spolehlivě v budoucích verzích.
Aktualizace systému iOS 6
Původně Maps používá Google Maps, ale nyní, Apple a Google mají oddělené mapy aplikace.
1) Chcete-li trasu pomocí aplikace Mapy Google, použijte k comgooglemaps schéma URL :
NSString* url = [NSString stringWithFormat: @"comgooglemaps://?daddr=%@&directionsmode=driving",
[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
BOOL opened = [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
2) Chcete-li použít Apple Maps, můžete použít novou MKMapItemtřídu pro iOS 6. Podívejte se na dokumenty API Apple zde
Zjednodušeně řečeno, budete používat něco takového, pokud směrování do cílových souřadnic ( 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];
S cílem podpořit i iOS 6+ a pre iOS 6 ve stejném kódu, tak bych doporučujeme použít něco takového kodexu, že Apple má na MKMapItemstraně API doc:
Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
// iOS 6 MKMapItem available
} else {
// use pre iOS 6 technique
}
To by se předpokládat, že váš Xcode Základna SDK je iOS 6 (nebo nejnovější iOS ).