2014-09-25 16 views

risposta

3

Ecco come l'ho fatto per il vostro riferimento, ma per apple, non ho trovato un modo per avviare la navigazione attraverso lo schema di 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

Apre le mappe e la posizione dei centri sul lat, ma non avvia la navigazione :( – htafoya

2

Sei corretto, Google e Apple richiedono entrambi l'input dell'utente, ma solo per premere il pulsante Vai.

Se si desidera specificare sia la posizione di inizio e fine, utilizzare il seguente formato:

Mappe Apple:

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

Google Maps:

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

fai attenzione con il posizionamento di% 20 nella stringa, poiché% dovrebbe essere %% o utilizzare lo spazio di qualsiasi tipo – htafoya

1

Swift classe 3 di supporto per avvio della navigazione di Apple Maps o Google Maps

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) 
    } 
}