2017-11-11 47 views
-2

我的代碼獲取特定位置附近的地點。我設法讓附近所有的位置座標和JSON看起來是這樣的:在[CLLocation]中保存JSON結果SWIFT

修訂JSON

這是JSON結構看起來像

{ 
    "results" : [ 
    { 
     "id" : "6a70e8bec1fd7429c3107bb53ff0663b68750b7d", 
     "rating" : 4.2999999999999998, 
     "vicinity" : "6169 طريق الأمير تركي بن عبدالعزيز الأول، الرياض", 
     "scope" : "GOOGLE", 
     "geometry" : { 
     "viewport" : { 
      "northeast" : { 
      "lat" : 24.725911030291499, 
      "lng" : 46.646357630291497 
      }, 
      "southwest" : { 
      "lat" : 24.723213069708489, 
      "lng" : 46.643659669708498 
      } 
     }, 
     "location" : { 
      "lat" : 24.7244879, 
      "lng" : 46.645116399999999 
     } 
     }, 
     "icon" : "https:\/\/maps.gstatic.com\/mapfiles\/place_api\/icons\/restaurant-71.png", 
     "place_id" : "ChIJebIILG8dLz4Rwh96XLe4lDk", 
     "opening_hours" : { 
     "weekday_text" : [ 

     ], 
     "open_now" : true 
     }, 
     "photos" : [ 
     { 
      "width" : 960, 
      "height" : 1280, 
      "html_attributions" : [ 
      "<a href=\"https:\/\/maps.google.com\/maps\/contrib\/111982605117618652897\/photos\">*خارج الخدمه* *مؤقتا*<\/a>" 
      ], 
      "photo_reference" : "CmRaAAAAkcQXErGTRgMEXeTRjXyqdJxiOD9Bq3ApLu9MfiWXjd1gGaJ7LRmSm19mJdXuT8q-KD3Pg0XuK4rAAA_-JwQl8iAo-y3jx8oQ4Zn3hBRJkHBgzXxvIyQrs3Nd-JKinQdgEhCYkgEXcPpPtT0Z7tc1_FOxGhSQFuKsRZFDeRW5AUy9VLAR3MdRUA" 
     } 
     ], 
     "reference" : "CmRRAAAAYXlBsUXQooQOBk0EWmHmoRFbX4cCqm7bYUm0U2ODQYwqv8fXNCgxbFFuZp2m8NHT-La7Zdk6WDY0eGdJqBIyT08sqyY-b4vZFjHZY32CQXYdaKtjT54YDeXglWRRKcAdEhD0imBkJB_luly2EbQNFA47GhSUrev3SNxuTvSRCARzjOZ6zwt3bw", 
     "name" : "Hamburgini هامبرغيني", 
     "types" : [ 
     "restaurant", 
     "food", 
     "point_of_interest", 
     "establishment" 
     ] 
    }, 

我如何保存導致 var coordinate: [CLLocation] = [CLLocation]()所以最終我可以選擇離另一個座標最近的地方?

我的代碼:

Alamofire.request(urlStr).responseJSON 
      { response in 
       if let value: AnyObject = response.result.value as AnyObject? { 
         //Handle the results as JSON 

         let data = JSON(value) 

       for (key,subJson):(String, JSON) in data["results"] { 

        let array = subJson["geometry"]["location"] 


       } 
     } 
     } 

回答

1

如果我明白你可以試試這個,而是取決於你需要什麼,我建議創建模型,並與您的JSON數據初始化它。

for (_, jsonDict): (String, JSON) in data["results"] { 
    guard let location = jsonDict[「geometry」][「location」] as? [String: Any] else { return } 

    if let latitude = location[「lat」] as? Double, let longitude = location[「lng」] as? Double { 
     let locationCoord = CLLocation(latitude: latitude, longitude: longitude) 
     coordinate.append(locationCoord) 
    } 
} 
+0

'元組類型 '(鍵:字符串,值:JSON)' 的值沒有任何成員「subscript''旁邊'座標[‘LAT’]'我認爲JSON響應是字典不是數組 – leo0019

+0

@ leo0019我認爲你的變量數組包含了所有與座標有關的字典。我會編輯我的答案。 –

+0

看看我的回答!不知何故,這對我有用,但我仍然認爲有一些奇怪的事 – leo0019

0
let array = subJson["geometry"]["location"].dictionaryValue 
       for (key,subJson):(String, JSON) in array { 
        // Do something you want 


        let latitude = array["lat"]?.doubleValue 
        let longitude = array["lng"]?.doubleValue 
        let location = CLLocation(latitude: latitude!, longitude: longitude!) 
         self.coordinate.append(location)