2013-12-13 6 views
11

Ich kann eine Linie zwischen zwei Punkten ziemlich einfach mit dem folgenden Code erstellen (Teil davon sowieso) Wie könnte ich die Linie punktiert statt fest machen? Wäre es auch möglich, die Opazität zu ändern, je länger die Linie ist?Gepunktete Linie auf der Kartenansicht

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay]; 
    renderer.strokeColor = [UIColor orangeColor]; 
    renderer.lineWidth = 3.0; 

    return renderer; 
} 

Antwort

39

können Sie die lineDashPattern Eigenschaft verwenden, um die Muster, das Sie für die Linie erstellen möchten.

MKPolylineRenderer ist eine Unterklasse von MKOverlayPathRenderer, die diese Eigenschaft und ein paar andere hat (siehe den Link zur Dokumentation).

Zum Beispiel setzt dies das Muster auf eine Linie 2 Punkte lang, gefolgt von einer 5-Punkte-Lücke. Das Muster wird für die gesamte Länge der Polylinie wiederholt.

renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5]; 

oder stellen Sie die alpha Eigenschaft:

renderer.alpha = 0.5; 

nicht sicher, was du mit "bedeuten

renderer.lineDashPattern = @[@2, @5]; 


Für die Opazität können Sie entweder ein alpha-Stellung zum strokeColor gelten je länger die Linie ist "Teil der Frage.

+0

Anna, danke für die Hilfe. Das macht Sinn. In Bezug auf die "längere Linie" habe ich mich gefragt, ob es möglich ist, den Alpha-Wert innerhalb der Linie von 1 auf 0,1 zu ändern. zum Beispiel wäre der Startpunkt ein Alpha-Wert von 1 und der Endpunkt könnte .1 – jdross

+0

Die Alpha entlang der Linie variieren würde ein Gradient sein und leider ist diese Fähigkeit nicht in den Standard-Renderer eingebaut. Sie müssen einen benutzerdefinierten Overlay-Renderer erstellen und die Zeichnung manuell ausführen. [This] (http://stackoverflow.com/a/20159374/467105) und [this] (http://stackoverflow.com/a/19377748/467105) können Ihnen helfen, loszulegen, wenn Sie diesen Weg verfolgen wollen. – Anna

+0

Schöne Erklärung @ Anna –