【发布时间】:2017-08-05 04:40:32
【问题描述】:
我现在真的很绝望。我已经连续进行了 7 个小时的编码和调试,从弄清楚如何在 Google 静态地图中画一个圆圈,将代码从 PHP 和 Java 转换为 Swift,只是为了看看解决方案是否可行。
幸运的是,我很幸运,能够正确生成带有 Circle 的 Google 静态地图。但是,我现在的问题是如何将它(字符串 URL)正确编码为 URL。我已经尝试了我在 SO 上找到的几乎所有东西。
以下是我的日志中浏览器中的示例工作 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^iAl@aAt@w@`Ao@dAa@jASlAGlAFjARdA`@`An@t@v@l@`A^hARlAFpAGnASlA_@hAm@`Au@x@aAl@eA`@kARmAFmAGkASeAa@aAm@u@y@m@aA_@iASmA&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%5EiAl@aAt@w@%60Ao@dAa@jASlAGlAFjARdA%60@%60An@t@v@l@%60A%5EhARlAFpAGnASlA_@hAm@%60Au@x@aAl@eA%60@kARmAFmAGkASeAa@aAm@u@y@m@aA_@iASmA&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%5EiAl@aAt@w@%60Ao@dAa@jASlAGlAFjARdA%60@%60An@t@v@l@%60A%5EhARlAFpAGnASlA_@hAm@%60Au@x@aAl@eA%60@kARmAFmAGkASeAa@aAm@u@y@m@aA_@iASmA&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 })
【问题讨论】:
-
输入您的代码以及您要对 URL 执行的操作。
-
虽然我觉得没必要,但还是这样吧。
-
这次调用中
mapURL的值是多少?当您说您尝试了每个 CharacterSet 时,您的意思是什么? -
mapURL应该是我在上面发布的工作字符串中的一个 URL。我已经尝试了每个可用于编码所述字符串的CharacterSet,只是试试我的运气,因为这是我第一次遇到这样的问题 - 一个不可编码的字符串到 URL。这就是我需要帮助的原因。 -
你应该展示你的代码来创建mapURL。我不知道你为什么需要关心 CharacterSet。
标签: ios objective-c swift google-maps