如何在 Swift 3 中找到自定义位置?

How do I spot a custom location in Swift 3?

我已经工作了一段时间,试图在地图上找到自定义位置...基本的东西(使用 google 地图 sdk)。

但我在运行时仍然遇到致命错误。

也许我没有正确地将 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 解析不起作用,它将只是 return []。但是既然你专门问了这个,你可以试试这个。

我认为您需要一个来自 google 的 API 密钥用于此 JSON 解析,您可以在此处创建 - 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 字符串的正确格式。

您可以在这里参考Google文档供您参考-https://developers.google.com/maps/documentation/geocoding/intro

您还可以通过将 url 字符串传递给浏览器来验证它是否有效。这将 return 您的 JSON 页面。如果它不起作用,它也会 return 错误。

希望对您有所帮助...祝一切顺利!

首先,如果您不确定通过将字符串值粘贴在一起构建的 URL 是否为您提供了正确的编码字符串。您尝试通过 URL 主机规则对整个字符串进行编码,这对于 URL 字符串的其他部分来说是不合适的。通过 URL 组件和 URL 查询项组合,您可以选择使用原始数据,因为组件可以使用可用的 getter 自动转换为正确编码的字符串。

其次,如果你强制解包一个可选的,你是故意这样做的,你应该做好它可能会崩溃的准备,换句话说,你仍然需要处理这种情况。