2012-06-02 41 views
3

我无法在MKOverlayView中添加两种不同颜色的MKPolylineView。任何想法如何实现这一目标? 感谢添加两个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; 
} 

回答

0

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东西。只需创建叠加视图并将其返回即可。