2016-10-21 3 views
1

Поскольку я начинаю использовать Swift 3, у меня возникла проблема с построением маршрута с помощью API Google Maps API.API Google Maps API в Swift 3

Мой маршрут имеет несколько точек маршрута и Swift 3, URL:

https://maps.googleapis.com/maps/api/directions/json?origin=48.4843822562792,35.0635632500052&destination=48.4893899423081,35.0640017911792&waypoints=48.4833428800255,35.0710221379995|48.4887622031403,35.0573639944196&key=AIzaSyAWpBT3uxovKLqdWIiwa29a4AcgtspAA1k

не работает из-за "|". Какие-либо предложения?

+0

, что проблема с быстрым 3 ??? его чистый URL-адрес не связан с каким-либо языком. Возможно, я знаю, в чем проблема? – CodeChanger

+0

на swift 2.3 с alamofire этот запрос работает так, как ожидалось, но теперь я получаю только одну «ногу» в ответ, хотя я отправляю несколько путевых точек. –

+0

Записан ли этот URL-адрес, который вы запрашиваете? это то же самое, что упоминание в вопросе или отличается от оригинального? – CodeChanger

ответ

0

Привета я не знаю много о скоро., Но я была такая же проблема в объективном C, и я сделал что-то ниже, и работал для меня,

NSMutableCharacterSet *alphaNumSymbols = [NSMutableCharacterSet characterSetWithCharactersInString:@"[email protected]#$&*()-_+=[]:;',/?."]; 
[alphaNumSymbols formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]]; 
urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols]; 
NSURL *directionsURL = [NSURL URLWithString:urlString]; 

Надеется, что это поможет

в Swift,

var alphaNumSymbols = CharacterSet(charactersInString: "[email protected]#$&*()-_+=[]:;',/?.") 
alphaNumSymbols!.formUnion(CharacterSet.alphanumerics) 
urlString = urlString.addingPercentEncoding(withAllowedCharacters: alphaNumSymbols)! 
var directionsURL = NSURL(string: urlString)! 
0

В Swift 3, следующий помог

let url_string = "URL STRING" 
let url = URL(string:url_string.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)) 
2

Для тех, кто хочет использовать указатели googlemaps api, вы должны отправлять свои путевые точки в массив параметров. Таким образом, труба больше не вызывает проблем.

var wayPointsString = "optimize:true" 
    if waypointsForRequest.count > 0 { 
     for location in waypointsForRequest { 
      wayPointsString = "\(wayPointsString)|\(location.coordinate.latitude),\(location.coordinate.longitude)" 
     } 
    } 
    let parameters : [String : String] = ["key" : self.directionsApikey, "sensor" : "false", "mode" : "driving", "alternatives" : "true", "origin" : "\(origin.coordinate.latitude),\(origin.coordinate.longitude)", "destination" : "\(destination.coordinate.latitude),\(destination.coordinate.longitude)", "waypoints" : wayPointsString] 
    let url = URL(string: "https://maps.googleapis.com/maps/api/directions/json?") 

    Alamofire.request(url!, method:.get, parameters: parameters) 
     .validate(contentType: ["application/json"]) 
     .responseJSON { response in 
      if response.value != nil { 
       let json = JSON(response.value!) 

      } 
    } 

Интересный ответ здесь: https://stackoverflow.com/a/40126476/3173405