2017-08-04 35 views
1

我現在真的絕望了。我一直在編寫和調試7個小時,從搞清楚如何在Google靜態地圖中繪製一個圓,將代碼從PHP和Java轉換爲Swift,以查看解決方案是否可行。無法弄清楚如何將字符串編碼爲Google靜態地圖API的URL iOS

幸運的是,我非常幸運,並且能夠正確地生成一個Google靜態地圖。但是,我現在的問題是如何正確地將它(String URL)編碼到URL中。我嘗試了幾乎所有我發現的東西。

下面是我的日誌在我的瀏覽器工作URL樣本:

WORKING GOOGLE STATIC MAP LINK

https://maps.googleapis.com/maps/api/staticmap?size=640x320&&path=color:0x2EB7FCDD%7Cweight:1%7Cfillcolor:0x2EB7FC80%7Cenc:umdxAip_bVFqARmA^[email protected]@[email protected]`[email protected]@jASlAGlAFjARdA`@`[email protected]@[email protected]@`A^[email protected]@`[email protected]@[email protected]`@[email protected]@[email protected]@[email protected][email protected]&key=AIzaSyDLDkhgnS5gUjlXl5Jqt8fxJq87Figz8co&zoom=15 

我都想盡CharacterSet的編碼字符串轉換成URL。

有些結果是:無論是在我的瀏覽器或我的圖像下載功能,這些工作

GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- HOST --> https%3A%2F%2Fmaps.googleapis.com%2Fmaps%2Fapi%2Fstaticmap%3Fsize=640x320&&path=color%3A0x2EB7FCDD%257Cweight%3A1%257Cfi ... &zoom=15 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- QUERY --> https://maps.googleapis.com/maps/api/staticmap?size=640x320&&path=color:0x2EB7FCDD%257Cweight:1%257Cfillcolor:0x2EB7FC80%257Cenc:umdxAip_bVFqARmA%[email protected]@[email protected]%[email protected]@jASlAGlAFjARdA%[email protected]%[email protected]@[email protected]@%60A%[email protected]@%[email protected]@[email protected]%[email protected]@[email protected]@[email protected]@[email protected]&key=AIzaSyDLDkhgnS5gUjlXl5Jqt8fxJq87Figz8co&zoom=15 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- WHITE SPACES --> %68%74%74%70%73%3A%2F%2F%6D%61%70%73%2E%67%6F%6F%67%6C%65%61%70%69%73%2E%63%6F%6D%2F%6D%61%70%73%2F%61%70%69%2F%73%74%61 ... 3D%31%35 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- nonBaseCharacters --> %68%74%74%70%73%3A%2F%2F%6D%61%70%73%2E%67%6F%6F%67%6C%65%61%70%69%73%2E%63%6F%6D%2F%6D%61%70%73%2F%61%70%69%2F%73%74%61 ... 3D%31%35 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- alphanumerics --> https%3A%2F%2Fmaps%2Egoogleapis%2Ecom%2Fmaps%2Fapi%2Fstaticmap%3Fsize%3D640x320%26%26path%3Dcolor%3A0x2EB7FCDD%257Cweigh ... oom%3D15 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- urlFragmentAllowed --> https://maps.googleapis.com/maps/api/staticmap?size=640x320&&path=color:0x2EB7FCDD%257Cweight:1%257Cfillcolor:0x2EB7FC80%257Cenc:umdxAip_bVFqARmA%[email protected]@[email protected]%[email protected]@jASlAGlAFjARdA%[email protected]%[email protected]@[email protected]@%60A%[email protected]@%[email protected]@[email protected]%[email protected]@[email protected]@[email protected]@[email protected]&key=AIzaSyDLDkhgnS5gUjlXl5Jqt8fxJq87Figz8co&zoom=15 
GPKit -- JobLocationTableViewCell 2017-08-04 19:55:53 +0000: -- decomposables --> %68%74%74%70%73%3A%2F%2F%6D%61%70%73%2E%67%6F%6F%67%6C%65%61%70%69%73%2E%63%6F%6D%2F%6D%61%70%73%2F%61%70%69%2F%73%74%61 ... 3D%31%35 

無。 Swift或Objective-C的答案是受歡迎的。

編輯:當然,我使用的URL用於下載生成的靜態地圖圖像,像這樣(我使用了一個名爲Kingfisher庫)

let mapURL = URL(string: staticMapUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!) 
self.imageView_Map.kf.setImage(
    with: mapURL, 
    placeholder: nil, 
    options: [.transition(.fade(1))], 
    progressBlock: { (receivedSize, totalSize) in 
    }, completionHandler: { (_, _, _, _) in }) 
+0

放入您的代碼以及您想要使用的URL。 –

+0

雖然我覺得沒有必要,但你走了。 – Glenn

+0

這次調用中'mapURL'的值是多少?當你說你嘗試過每一個CharacterSet時,你的意思是什麼? –

回答

0

翠鳥文檔說:

let url = URL(string: "url_of_your_image") 
    imageView.kf.setImage(with: url) 

所以,你所需要做的就是

let url = URL(string: "https://maps.googleapis.com/maps/api/staticmap?size=640x320&&path=color:0x2EB7FCDD%7Cweight:1%7Cfillcolor:0x2EB7FC80%7Cenc:umdxAip_bVFqARmA%[email protected]@[email protected]%[email protected]@jASlAGlAFjARdA%[email protected]%[email protected]@[email protected]@%60A%[email protected]@%[email protected]@[email protected]%[email protected]@[email protected]@[email protected]@[email protected]&key=AIzaSyDLDkhgnS5gUjlXl5Jqt8fxJq87Figz8co&zoom=15") 
    imageView.kf.setImage(with: url) 

我沒有看到你需要編碼。

+0

我認爲每個字符串url必須被編碼以轉換成URL,因爲我每次都這樣做,並且在發佈此問題之前我一直在嘗試解決方案。這是給我一個'無'。凌晨4:45。我對自己很失望。 – Glenn

+0

您發佈的網址已被編碼。如果您需要從部分中創建該URL,則需要對每個部分進行編碼 –

+0

事實上,因爲我使用了一個用於編碼大量「CLLocationCoordinate2D」的庫來生成這樣一個可愛的字符串URL。先生,您現在說的真正的解決方案是什麼? – Glenn