2017-05-18 3 views
0

Ich versuche, Route zwischen zwei Punkten zu zeichnen, aber nicht in der Lage, dies zu tun beacuese gibt es keinen Wert in meinen Polypoints. Dies ist, wie ich es tue:Nicht in der Lage, Polylinie zu zeichnen Google Maps: Swift 3

Parsing 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) 
           } 

          } 
         } 
        } 

Bis polystring I-Werte immer bin aber kein Wert für diese Zeile Code if let polyString = overview_polyline["points"] as? String bekommen. Irgendeine Idee warum polyString ist null?

Ich bin durch diesen Link gegangen, um die Konzepte noch nicht in der Lage, es zu implementieren deaktivieren. unexpectedly found nil while unwrapping an Optional value

+0

Haben Sie, dass overview_polyline verifiziert [ „Punkte“] ist ein String und nicht ein anderer Datentyp? – Pheepster

Antwort

2

Ich erreichte dies, indem ich obigen Code zu diesem Code änderte. So google api zu analysieren und eine Polylinie auf der Karte erstellen, können Sie diesen Code verwenden, geschrieben in swift 3.e

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

Vielen Dank ...... –

Verwandte Themen