Ich versuche, eine nette MKPolyline
auf einem MKPolylineView
zu zeichnen. Alles läuft großartig, so weit - die Polylinie zieht, so wie ich es will und wenn ich es möchte mit dem folgenden Code:Zeichnen MKPolyline Füllfarbe
[[self map] addOverlay:routeLine];
Und diese Methode, um die App zu sagen, wie es zeichnen:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKOverlayView* overlayView = nil;
self.routeLineView = [[MKPolylineView alloc] initWithPolyline:[self routeLine]];
[[self routeLineView] setFillColor:[UIColor colorWithRed:167/255.0f green:210/255.0f blue:244/255.0f alpha:1.0]];
[[self routeLineView] setStrokeColor:[UIColor colorWithRed:0/255.0f green:136/255.0f blue:255/255.0f alpha:1.0]];
[[self routeLineView] setLineWidth:15.0];
[[self routeLineView] setLineCap:kCGLineCapRound];
overlayView = [self routeLineView];
return overlayView;
}
Als Ergebnis bekomme ich eine Linie mit einem festen Blau. Das Blau, das ich sehe, ist jedoch nicht die Füllfarbe mit dem Strich, den ich erwarte - es ist das Blau der Strichfarbe. Es gibt keine Füllfarbe, wenn ich diese Methode verwende. Warum zeichnet es nicht die Füllfarbe auf der Polylinie?
Nach der Untersuchung weiter, fand ich diese Leckerbissen der Informationen in dem Schnellen Hilfe Abschnitt von Xcode:
Die MKPolylineView Klasse, um die visuelle Darstellung für eine MKPolyline Annotierungsobjekt bietet. Diese Ansicht streicht den Pfad, der von der Annotation dargestellt wird. (Diese Klasse füllt nicht den durch den Pfad eingeschlossenen Bereich.) Sie können die Farbe und andere Zeichenattribute des Pfads ändern, indem Sie die von der MKOverlayPathView-Klasse geerbten Eigenschaften ändern.
Das klingt einfach lächerlich. Ich muss diese Klasse zu Set die Füllfarbe verwenden, aber ich kann nicht diese Klasse zu zeichnen die Füllfarbe? Das scheint sehr merkwürdig, wenn man bedenkt, dass es schon den Strich zieht. Die letzte Zeile in dieser Erklärung aus der Dokumentation ist ein wenig unklar, scheint aber eine Antwort zu liefern - ich habe nur eine harte Zeit, die Antwort zu kodieren/zu finden. Ich habe kein MKOverlayPathView
in meinem Projekt (was ist das überhaupt?) Aber scheint es die Lösung zu sein - weiß jemand, wie man es benutzt?
'MKPolylineView' ist eine Unterklasse von' MKOverlayPathView'. Unabhängig davon, möchten Sie nur 'MKPolygon' (und erstellen Sie die zugehörige' MKPolygonView') anstelle von 'MKPolyline'. 'MKPolygon' zeichnet sowohl den Strich als auch die Füllung. – Rob