2014-09-25 5 views

Odpowiedz

3

Oto jak to zrobiłem dla twojego odniesienia, ale dla Apple, nie znalazłem sposobu na rozpoczęcie nawigacji przez schemat URL.

+ (void)navigateToLocation:(CLLocation*)_navLocation { 
    if ([[UIApplication sharedApplication] canOpenURL: 
     [NSURL URLWithString:@"comgooglemaps://"]]) { 
     NSString *string = [NSString stringWithFormat:@"comgooglemaps://?daddr=%f,%f&directionsmode=driving",_navLocation.coordinate.latitude,_navLocation.coordinate.longitude]; 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]]; 
    } else { 
     NSString *string = [NSString stringWithFormat:@"http://maps.apple.com/?ll=%f,%f",_navLocation.coordinate.latitude,_navLocation.coordinate.longitude]; 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]]; 
    } 
} 
+0

Powoduje otwarcie mapy i położenia centrów na łacie, ale nie uruchamia nawigacji :( – htafoya

2

Masz rację, zarówno Google, jak i Apple wymagają podania danych przez użytkownika, ale tylko po naciśnięciu przycisku "Idź".

Jeśli chcesz określić zarówno lokalizację początkową i końcową, należy użyć następującego formatu:

Jabłko mapy:

http://maps.apple.com/maps?saddr=Current%20Location&daddr=<Your Location> 

Google Maps:

comgooglemaps-x-callback://?saddr=&daddr=<Your Location> 
+0

należy zachować ostrożność, wstawiając% 20 do napisu, ponieważ% powinno być %% lub użyć dowolnej przestrzeni – htafoya

1

Swift klasy 3 Helper dla uruchamianie Map Apple lub Nawigacja w Mapach Google

struct LinksHelper { 
    static func startNavigation(coordinate: CLLocationCoordinate2D) { 
     struct Links { 
      static let kGoogleMapsSchema = "comgooglemaps://" 
      static let kGoogleMaps = "\(kGoogleMapsSchema)?daddr=%f,%f&directionsmode=driving" 
      static let kAppleMaps = "https://maps.apple.com/?saddr=Current Location&daddr=%f,%f&z=10&t=s" 
     } 

     var path: String! 

     if let googleMapsSchemaUrl = URL(string:Links.kGoogleMapsSchema), UIApplication.shared.canOpenURL(googleMapsSchemaUrl) { 
      path = Links.kGoogleMaps 
     } else { 
      path = Links.kAppleMaps 
     } 
     guard let str = String(format: path, coordinate.latitude, coordinate.longitude).addingPercentEncoding(
      withAllowedCharacters: .urlQueryAllowed) else { 
       return 
     } 

     guard let url = URL(string: str) else { 
      return 
     } 

     UIApplication.shared.openURL(url) 
    } 
} 
Powiązane problemy