如何在Swift 3中找到自定义位置?
我一直在努力尝试和发现一个地图上的自定义位置...基本的东西(谷歌地图sdk)。如何在Swift 3中找到自定义位置?
但我仍然在运行时遇到致命错误。
也许我没有正确地从JSON格式转换为字典对象?
geocodeURLString = geocodeURLString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)!
dictionary = try JSONSerialization.jsonObject(with: geocodingResultsData! as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! Dictionary<NSObject, AnyObject>
//ERROR HERE: fatal error: unexpectedly found nil while unwrapping an Optional value
// Get the response status.
let status = dictionary["status" as NSObject] as! String
if status == "OK" {
let allResults = dictionary["results" as NSObject] as! Array<Dictionary<NSObject, AnyObject>>
}
我不完全确定这是否是您的错误。因为如果你的json解析不起作用,它只会返回[]。但是既然你特别提出这个问题,你可以试试这个。
我认为你需要从谷歌应用程序这个JSON解析,您可以在这里创建API密钥 - https://console.developers.google.com
此外, “https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY” - 这是URL字符串为您解析正确的格式。
你可以参考谷歌文档在这里,供大家参考 - https://developers.google.com/maps/documentation/geocoding/intro
您还可以验证你的URL字符串是否工作由它传递给你的浏览器。这将返回你的JSON页面。如果不起作用,它也会返回错误。
我希望这可以帮助...所有最好的!
起初,如果您不确定从粘贴字符串值构建的URL是否为您提供正确编码的字符串,我建议使用URL组件创建所需的URL。您尝试通过URL主机规则对整个字符串进行编码,这不是URL字符串其他部分的适当方式。通过URL组件和URL查询项目组合,您可以选择使用原始数据,因为组件可以使用可用的获取器自动转换为正确编码的字符串。其次,如果你强制 - 解开一个可选项,你有意识地这样做,你应该做好准备它可能会崩溃,换句话说,你仍然需要处理这种情况。
感谢您的意见! –
我不认为你需要一个API密钥的地址请求,只为方向。但你是对的,问题是我的编码是奇怪的,我的地址网址无效 –