如何解决无法创建包含Google加密折线的Swift URL对象
我在Swift中创建URL对象时遇到验证问题,当我尝试通过以下字符串创建URL对象时,返回nil:
我需要使用Google Maps Static API来获取地图的图像,包括以加密折线形式作为参数传递给url的路径。
我尝试使用以下方法转义网址:
addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
尽管折线已更改且不会绘制路径,但这样做可以创建URL对象。
您能给我任何建议吗?
PS。如果我输入的网址没有在浏览器中应用addingPercentEncoding
,它将显示预期的图像。
PPS。选择不将GMS SDK包含在项目中
-编辑-
嗨,我尝试了Duncan C建议的URLComponents解决方案,尽管我得到的结果与google编码路径失真相同。
var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = "maps.googleapis.com"
urlComponents.path = "/maps/api/staticmap"
urlComponents.setQueryItems(with: params)
print(urlComponents.url?.absoluteString)
if let url = urlComponents.url { // generates wrong url }
解决方法
URL的不同部分需要不同的编码规则。
我建议使用系统类URLComponents
创建您的URL。这样,您可以指定URL的各个部分(不使用编码),然后查询URLComponents对象以获取URL。
编辑:
在我看来,问题在于折线参数的编码,因为您说这些参数未渲染。您应该包括指向Google静态地图API上Google文档部分的链接,该部分处理编码的折线,并显示编码折线参数的代码。
在“谷歌地图编码的折线swift”上进行的快速Google搜索产生了project on Github,该代码在Swift中实现了Google的折线编码器/解码器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。