2016-10-21 10 views
1

Swift 3を使い始めるにあたり、Google Maps APIの指示でルートを構築する際に問題があります。 "|" SwiftのGoogle Maps APIの指示3

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

が理由では動作しません:

私のルートはいくつかのウェイポイントを持っており、スウィフト3 URLに。助言がありますか?

+0

何SWIFT 3での問題?その言語に関連していない純粋なURLです。問題は何か分かりますか? – CodeChanger

+0

のalamofireでこのリクエストは期待どおりに機能しますが、今では私はいくつかのウェイポイントを送信していますが、ただ1つの "leg"しか返さない –

+0

リクエストしているURLをログに記録しましたか?それは問題の言及と同じですか、あるいは元のものと異なっていますか? – CodeChanger

答えて

0

こんにちは。SWIFTについてあまり知りませんでしたが、私は客観Cで同じ問題を抱えていたし、私は以下の何かをしたし、私のために働いた、

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

希望これはで

を助けますスウィフト、スウィフト3では

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

、以下が

let url_string = "URL STRING" 
let url = URL(string:url_string.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)) 
012を助けました
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