2014-09-25 4 views
6

Есть ли способ начать навигацию автоматически при запуске Google Maps или Apple Maps с помощью схемы URL-адресов на iOS?Начать навигацию автоматически с помощью карт Google Maps и схем URL-адресов Apple Maps

Я вижу несколько необязательных параметров для обоих, но не для начала навигации без ввода пользователем.

ответ

3

Вот как я сделал это для вашей справки, но для яблока я не нашел способ начать навигацию по схеме 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

Открывает расположение карт и центров на лате, но не запускает навигацию :( – htafoya

2

Вы правы, Google и Apple требуют ввода пользователя, но только для того, чтобы нажать кнопку «Пуск».

Если вы хотите, чтобы указать как начальное и конечное расположение, используйте следующий формат:

компании Apple Maps:

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

Google Maps:

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

будьте осторожны с размещением% 20 в строке, так как% должно быть %% или использовать пробел вообще – htafoya

1

Swift 3 вспомогательный класс для начиная с карт Apple Maps или 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) 
    } 
}