添加两个 MKPolylineView

Posted

技术标签:

【中文标题】添加两个 MKPolylineView【英文标题】:Add two MKPolylineView 【发布时间】:2012-06-02 20:56:55 【问题描述】:

我无法在 MKOverlayView 中添加两个具有不同颜色的不同 MKPolylineView。关于如何实现这一目标的任何想法? 谢谢

这是我的代码:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay

MKOverlayView* overlayView = nil;
UIColor *mycolor;

self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:self.routeLine] autorelease];

mycolor = [UIColor colorWithRed:85.0/255.0 green:133.0/255.0 blue:255.0/255.0 alpha:0.6];
self.routeLineView.fillColor = mycolor;
self.routeLineView.strokeColor = mycolor;
self.routeLineView.lineWidth = 15;
[overlayView addSubview:self.routeLineView];

self.routeLineView2 = [[[MKPolylineView alloc] initWithPolyline:self.routeLine2] autorelease];
mycolor = [UIColor colorWithRed:85.0/255.0 green:19.0/255.0 blue:25.0/255.0 alpha:0.6];
self.routeLineView2.fillColor = mycolor;
self.routeLineView2.strokeColor = mycolor;
self.routeLineView2.lineWidth = 15;
[overlayView addSubview:self.routeLineView2];   

return overlayView;

【问题讨论】:

【参考方案1】:

viewForOverlay 方法将为您添加到地图的每个叠加层单独调用。因此,在该方法中,您只返回当前正在调用的叠加层的叠加层视图(即overlay 参数)。

检查它正在为哪个叠加层请求视图,并仅为该叠加层创建和返回视图。

例如:

if (overlay == self.routeLine)

    //create and return overlay view for routeLine...
    //set color, etc...
    return self.routeLineView;

else
if (overlay == self.routeLine2)

    //create and return overlay view for routeLine2...
    //set color, etc...
    return self.routeLineView2;


return nil;

不要做任何addSubview 的事情。只需创建叠加视图并将其返回即可。

【讨论】:

以上是关于添加两个 MKPolylineView的主要内容,如果未能解决你的问题,请参考以下文章

如何“添加”两个 NSLayoutDimensions?

错误:'+' 不能添加两个指针 [关闭]

将两个 xib 文件中的两个 tableviews 添加到主 xib 视图

添加两个 MKPolylineView

为数组中的每两个 div 添加两个相同的图像

Pandas:如何添加两个时间戳值?