我刚刚按照本教程在iOS 7 http://www.techotopia.com/index.php/Using_MKDirections_to_get_iOS_7_Map_Directions_and_Routes
中的地图上绘制路线很棒,但我找不到如何在不同的颜色上绘制替代路线,并在触摸每条路线时改变颜色。使用此代码,所有路径都使用相同的颜色绘制:
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
MKPolylineRenderer *renderer =
[[MKPolylineRenderer alloc] initWithOverlay:overlay];
renderer.strokeColor = [UIColor blueColor];
renderer.lineWidth = 5.0;
return renderer;
}
有什么想法吗?谢谢你的建议
答案 0 :(得分:3)
警告:我没试过这个;我只是在这里输入它而不运行它,这是我很少做的事情。所以它可能不起作用。
我建议使用具有颜色属性的MKPolyline子类。当我想基于方向段添加折线作为地图的叠加层时,我会实例化该子类并给它一个颜色。这很棘手,但我认为可以做到:
MKPolyline* poly = route.polyline;
MyColoredPolyline* poly2 =
[MyColoredPolyline polylineWithPoints:poly.points count:poly.pointCount];
poly2.color = // whatever
[self.map addOverlay:poly2];
稍后,渲染器可以获取该颜色并使用它来设置MKPolylineRenderer的笔触颜色。
if ([overlay isKindOfClass:[MyColoredPolyline class]]) {
v = [[MKPolylineRenderer alloc] initWithPolyline:(MKPolyline*)overlay];
v.strokeColor = ((MyColoredPolyline*)overlay).color;
答案 1 :(得分:2)
以下是一些“直截了当,简单易懂”的方式来做你所描述的:
“如何使用其他颜色绘制替代路线” :由于MKDirections
似乎没有使用subtitle
它创建的叠加层的属性,您可以在添加叠加层之前在其中填充“颜色代码”,然后在rendererForOverlay
中,根据其subtitle
设置折线的颜色。
然而,正如@matt评论和回答的那样,更好的方法是将MKPolyline
子类化并创建一个明确的color
属性。