2017-05-18 37 views
0

我想繪製兩點之間的路線,但不能這樣做beacuese在我的聚點有沒有價值。 這是我正在做它:無法繪製Polyline谷歌地圖:斯威夫特3

解析JSON:

if let json : [String:Any] = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]{ 

         if let routes = json["routes"] as? [Any]{ 
          if let overview_polyline = routes[0] as?[String:Any]{ 
           print("overview_polyline\(overview_polyline)")// Getting values till here 
           if let polyString = overview_polyline["points"] as? String{ 

            //Call this method to draw path on map 
            self.showPath(polyStr: polyString) 
           } 

          } 
         } 
        } 

直到polystring我收到值,但該行代碼if let polyString = overview_polyline["points"] as? String沒有得到任何價值。 任何想法爲什麼polyString

我已經通過此鏈接清除仍然無法實現它的概念。 unexpectedly found nil while unwrapping an Optional value

+0

是否已確認overview_polyline [「點」]是一個字符串,而不是其他一些數據類型? – Pheepster

回答

2

我通過修改上面的代碼來達到這個目的。因此,要分析谷歌API和創建在地圖上的折線,您可以使用此代碼,寫在迅速3.

if let json : [String:Any] = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]{ 
         let routes = json["routes"] as! NSArray; 
         print(routes) 
         self.mapView.clear(); 

         OperationQueue.main.addOperation({ 
          for route in routes 
          { 


           let routeOverviewPolyline:NSDictionary = (route as! NSDictionary).value(forKey: "overview_polyline") as! NSDictionary 
           let points = routeOverviewPolyline.object(forKey: "points") 
           let path = GMSPath.init(fromEncodedPath: points! as! String) 
           let polyline = GMSPolyline.init(path: path) 
           polyline.strokeWidth = 3 

           polyline.map = self.mapView 

          } 
         }) 
        } 
+0

非常感謝...... –