Я пытаюсь нарисовать красивый MKPolyline
на MKPolylineView
. Пока все идет отлично — полилиния рисуется так, как я хочу, и когда я хочу, используя следующий код:
[[self map] addOverlay:routeLine];
И этот метод, чтобы сообщить приложению, как его рисовать:
- (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;
}
В результате я получаю сплошную синюю линию. Однако синий, который я вижу, не является цветом заливки с обводкой, которую я ожидаю, - это синий цвет обводки. Когда я использую этот метод, цвет заливки отсутствует. Почему не отображается цвет заливки полилинии?
После дальнейшего изучения я нашел этот лакомый кусочек информации в разделе Quick Help Xcode:
Класс MKPolylineView обеспечивает визуальное представление объекта аннотации MKPolyline. Этот вид обводит путь, представленный аннотацией. (Этот класс не заполняет область, ограниченную путем.) Вы можете изменить цвет и другие атрибуты рисования пути, изменив свойства, унаследованные от класса MKOverlayPathView.
Это просто смешно звучит. Мне нужно использовать этот класс для установки цвета заливки, но я не могу использовать этот класс для отрисовки цвета заливки? Это кажется очень странным, учитывая, что он уже рисует штрих. Последняя строка в этом объяснении из документации немного неясна, но, кажется, дает ответ - мне просто трудно кодировать/находить ответ. В моем проекте нет MKOverlayPathView
(что это вообще такое?), но кажется, это решение — кто-нибудь знает, как его использовать?
MKPolylineView
является подклассомMKOverlayPathView
. Независимо от этого, вы просто хотите использоватьMKPolygon
(и создать связанныйMKPolygonView
) вместоMKPolyline
.MKPolygon
рисует и обводку, и заливку. - person Rob   schedule 17.02.2013