0

您好我写了这个代码来画一些点之间的折线:斯威夫特,MKPolyline如何创建折线坐标点之间

var arrayToDraw: Array<Any> = [] 
var forpolyline: Array<CLLocationDegrees> = [] 
var forpolyline2: CLLocationCoordinate2D = CLLocationCoordinate2D.init() 


func showRoute() { 
    for h in 0...(orderFinalDictionary.count - 1){ 
     arrayToDraw = orderFinalDictionary[h].value 
     print(arrayToDraw) 
     var arrayToDrawCount = arrayToDraw.count 
     for n in 0...(arrayToDrawCount - 1){ 
      forpolyline = (arrayToDraw[n] as! Array<CLLocationDegrees>) 
      forpolyline2.latitude = (forpolyline[0]) 
      forpolyline2.longitude = (forpolyline[1]) 
      print(forpolyline2) 
       var geodesic = MKPolyline(coordinates: &forpolyline2, count: 1) 
       self.mapView.add(geodesic) 
     } 
    } 
} 

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
    let renderer = MKPolylineRenderer(polyline: overlay as! MKPolyline) 
    renderer.strokeColor = UIColor.red 
    renderer.lineWidth = 3 

    return renderer 
} 

它需要坐标从字典,把它放在一个阵列中(arraToDraw)和我使用forpolyline和forpolyline2来投射值。

现在的问题是,它只在坐标上画点,我怎么连接它?

回答

1

您正在创建具有单个点的多条多段线,而不是具有多个点的单条多段线。在不知道字典结构的情况下很难得到正确的代码,但是这应该更符合你想要做的事情:

var arrayToDraw: Array<Any> = [] 
var forpolyline: Array<CLLocationDegrees> = [] 
var forpolyline2: CLLocationCoordinate2D = [CLLocationCoordinate2D]() 

func showRoute() { 
    for h in 0...(orderFinalDictionary.count - 1){ 
     arrayToDraw = orderFinalDictionary[h].value 
     print(arrayToDraw) 
     var arrayToDrawCount = arrayToDraw.count 
     for n in 0...(arrayToDrawCount - 1){ 
      forpolyline = (arrayToDraw[n] as! Array<CLLocationDegrees>) 
      forpolyline2.append(CLLocationCoordinate2D(latitude: forpolyline[0], longitude: forpolyline[1])) 
     } 
     print(forpolyline2) 
     let geodesic = MKPolyline(coordinates: &forpolyline2, count: forpolyline2.count) 
     self.mapView.add(geodesic) 
    } 
} 

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
    let renderer = MKPolylineRenderer(polyline: overlay as! MKPolyline) 
    renderer.strokeColor = UIColor.red 
    renderer.lineWidth = 3 

    return renderer 
} 
+0

感谢你这么多,它的工作原理。 –