2017-03-01 33 views
0

我一直在努力嘗試和發現一個地圖上的自定義位置...基本的東西(谷歌地圖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>> 


} 

回答

1

我不完全確定這是否是您的錯誤。因爲如果你的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頁面。如果不起作用,它也會返回錯誤。

我希望這可以幫助...所有最好的!

+0

我不認爲你需要一個API密鑰的地址請求,只爲方向。但你是對的,問題是我的編碼是奇怪的,我的地址網址無效 –

1

起初,如果您不確定從粘貼字符串值構建的URL是否爲您提供正確編碼的字符串,我建議使用URL組件創建所需的URL。您嘗試通過URL主機規則對整個字符串進行編碼,這不是URL字符串其他部分的適當方式。通過URL組件和URL查詢項目組合,您可以選擇使用原始數據,因爲組件可以使用可用的獲取器自動轉換爲正確編碼的字符串。其次,如果你強制 - 解開一個可選項,你有意識地這樣做,你應該做好準備它可能會崩潰,換句話說,你仍然需要處理這種情況。

+0

感謝您的意見! –

相關問題