2016-07-28 8 views
0

zeichnen Ich versuche, eine Linie zwischen zwei Anmerkungen auf meiner Karte zu zeichnen. Der Code funktioniert, aber ich sehe ihn nicht auf der Karte. Hier ist mein Code:Kann keine Polylinie über MapKit in Swift

func longPressGesture() 
{ 
    let lpg = UILongPressGestureRecognizer(target: self, action: "longPressAction:") 
    lpg.minimumPressDuration = 1; 
    Map.addGestureRecognizer(lpg) 
} 

func longPressAction(myRecognizer : UILongPressGestureRecognizer) 
{ 
    let currPoint = myRecognizer.locationInView(Map) 
    let point = Map.convertPoint(currPoint, toCoordinateFromView: Map) 
    points.append(currPoint); 
    if(points.count>1) 
    { 
     let startPoint = Map.convertPoint(points[points.count-2], toCoordinateFromView: Map) 
     let endPoint = Map.convertPoint(currPoint, toCoordinateFromView: Map) 
     var lineCoords = [startPoint,endPoint] 
     var line = MKPolyline(coordinates: &lineCoords, count: 2) 
     Map.addOverlay(line) 
    } 
    let myAnnotation = MKPointAnnotation(); 
    myAnnotation.coordinate = point 
    myAnnotation.title = "Test" 
    myAnnotation.subtitle = "Test subtitle" 
    Map.addAnnotation(myAnnotation); 
} 

mapView Methode (nicht sicher, ob es verwendet wird, ich bin neu zu schnell und ich habe das nicht schreiben):

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 
    print(overlay) 
    if overlay is MKCircle { 
     let circle = MKCircleRenderer(overlay: overlay); 
     circle.strokeColor = UIColor.redColor(); 
     circle.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1); 
     circle.lineWidth = 1; 
     return circle; 
    }else if overlay is MKTileOverlay { 
     let carte_Renderer = MKTileOverlayRenderer(overlay: overlay) 
     carte_Renderer.alpha = 1 
     return carte_Renderer 
    }else if overlay is MKPolyline { 
     let polylineRenderer = MKPolylineRenderer(overlay: overlay); 
     polylineRenderer.strokeColor = UIColor.blueColor(); 
     polylineRenderer.lineWidth = 5; 
     return polylineRenderer; 
    }else { 
     return MKPolylineRenderer(); 
    } 
} 

Antwort

2

Stellen Sie sicher, Sie haben ein bekam rendererForOverlay Methode, die definiert, wie Ihre MKPolyline Objekte aussehen werden.

Sie müssen auch die MKMapViewDelegate einbeziehen, damit dies funktioniert.

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer! 
{ 
    if overlay is MKPolyline 
    { 
     let route: MKPolyline = overlay as MKPolyline 
     let routeRenderer = MKPolylineRenderer(polyline:route) 
     routeRenderer.lineWidth = 3.0 
     routeRenderer.strokeColor = UIColor(red: 45.0/255.0, green: 200.0/255.0, blue: 0.0/255.0, alpha: 1); 

     return routeRenderer 
    } 
    return nil 
} 
+0

hinzugefügt mapView Methode auf die Frage – Jamil

+0

Haben Sie die 'MKMapViewDelegate' bekam dort können Sie zeigen Sie uns Ihre' Map' Klassendeklaration? Wird dein 'rendererForOverlay' aufgerufen? – fuzz

+0

Delegierte wurde remediert, ich weiß nicht warum :) abgeräumt es und alles hat funktioniert, danke! – Jamil