SORU
23 ŞUBAT 2009, PAZARTESİ


Nasıl Başlangıç Adresi olarak Yön için iPhone Haritalar çağırmak için Güncel Konum ile

Biliyorum mümkün başlatmak için iPhone maps uygulaması çağırarak openURL Bir google maps URL parametreleri saddr daddr konum dizeleri veya Enlem/Uzun (aşağıdaki örneğe bakın).

Ama mümkünse başlangıç adresi diye merak ediyorum"Geçerli Konum"haritalar kullanabileceğim çok yer imiHaritalarapp konumu işleme kodu. Google Arama oldukça başarısız olmuştur.

Örneğin:

[[UIApplication sharedApplication] openURL:
    [NSURL URLWithString:
        [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@", 
                                    myLatLong, 
                                    latlong]]];

Geçerli konum yer imi çağırmak için bir şey hariç myLatLong yerine.

CEVAP
8 HAZİRAN 2009, PAZARTESİ


Önceden iOS 6

Temel Konum geçerli konum almak için kullanmanız gerekir, ama/uzun lat çift, Haritalar, sokak adresi veya yer için oradan, size rota alabilirsiniz. Bunun 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]];

CoreLocation açıkça geçerli konumu bulmak için kullanarak önlemek istiyorum, ve @"http://maps.google.com/maps?saddr=Current Location&daddr=%@" url yerine kullanmak istiyorsanız son olarak, sonra yerleştirmek için nasıl see this link that I provided in comments belowGeçerli Konumstring. Ancak, başka bir belgelenmemiş bir özelliği yararlanarak, ve Jason McCreary aşağıda belirttiği gibi, güvenilir bir gelecek sürümlerde çalışmayabilir.


İOS 6 için güncelleme

AslındaHaritalarGoogle maps, ama şimdi kullanılan, Apple ve Google maps ayrı uygulamalar var.

1)Eğer rotayı Google Haritalar uygulamasını kullanarak yapmak istiyorsanız, the comgooglemaps URL scheme kullanın:

NSString* url = [NSString stringWithFormat: @"comgooglemaps://?daddr=%@&directionsmode=driving",
                    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
BOOL opened = [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

2)Apple Maps kullanarak, iOS 6 MKMapItem yeni sınıfını kullanabilirsiniz. See the Apple API docs here

Temelde, eğer bir hedefe yönlendirme eğer böyle bir şey kullanınkoordinatları(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ı kod ve önceden iOS 6 hem de iOS 6 desteği için, Apple MKMapItem API doc sayfasında bu kod gibi bir şey kullanarak öneririm:

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
   // iOS 6 MKMapItem available
} else {
   // use pre iOS 6 technique
}

Bu böyle büyük mükafat Base SDK iOS 6 olduğunu (yaEn son iOS).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • case LianLi

    case LianLi

    28 Mayıs 2010
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006