【发布时间】:2013-02-01 15:21:00
【问题描述】:
我试图在MKPolylineView 上画一个漂亮的MKPolyline。到目前为止一切都很好 - 折线按照我想要的方式绘制,并且在我想要的时候使用以下代码:
[[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;
}
结果我得到了一条纯蓝色的线。然而,我看到的蓝色不是我期望的笔触填充颜色 - 它是笔触颜色的蓝色。使用此方法时没有填充颜色。 为什么不在折线上绘制填充颜色?
在进一步调查之后,我在 Xcode 的 Quick Help 部分中发现了这条信息:
MKPolylineView 类为 MKPolyline 注释对象提供可视化表示。此视图描边由注释表示的路径。 (该类不会填充路径包围的区域。)您可以通过修改继承自 MKOverlayPathView 类的属性来更改路径的颜色和其他绘制属性。
这听起来很荒谬。我必须使用这个类来设置填充颜色,但是我不能使用这个类来绘制填充颜色?考虑到它已经画了笔画,这似乎很奇怪。文档中这个解释的最后一行有点不清楚,但似乎提供了一个答案——我只是很难编码/找到答案。我的项目中没有MKOverlayPathView(那是什么?)但这似乎是解决方案 - 有人知道如何使用它吗?
【问题讨论】:
-
MKPolylineView是MKOverlayPathView的子类。无论如何,您只想使用MKPolygon(并创建关联的MKPolygonView)而不是MKPolyline。MKPolygon绘制描边和填充。
标签: ios objective-c mkmapview mapkit polyline