Google Maps API:字符串网址Enconding

时间:2016-09-18 20:20:42

标签: ios swift google-maps url swift3

我正在使用以下代码搜索地点:

let correctedAddress:String! = self.searchResults[(indexPath as NSIndexPath).row].addingPercentEncoding(withAllowedCharacters: CharacterSet.symbols)

let url = URL(string: "https://maps.googleapis.com/maps/api/geocode/json?address=\(correctedAddress)&sensor=false")

self.searchResults [(indexPath as NSIndexPath).row]返回如下字符串:“圣保罗 - 巴西圣保罗州”

作为URL参数的字符串是这样的(在编码之后):

https://maps.googleapis.com/maps/api/geocode/json?address=Optional(\%22State%20of%20S%C3%A3o%20Paulo%2C%20Brazil\%22)&sensor=false

如果我在网络浏览器中搜索此网址,则会显示JSON。所以我假设它是一个有效的URL,但URL(string:..)方法总是返回 nil

我可能需要更改编码,我尝试使用CharacterSet.urlPathAllowed但总是返回nil。

我应该使用哪种编码?还是有别的错呢?

2 个答案:

答案 0 :(得分:4)

尝试删除网址

中的Optional(...)字符串

https://maps.googleapis.com/maps/api/geocode/json?address= \%22State%20of%20S%C3%A 3 O%20Paulo%2C%20Brazil \%22安培;传感器=假

我认为这就是网址返回nil的原因。

答案 1 :(得分:0)

这对我有用:

https://maps.googleapis.com/maps/api/geocode/json?address=”+ correctAddress +“& sensor = false”