【问题标题】:Add two MKPolylineView添加两个 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;
}

【问题讨论】:

    标签: iphone objective-c mapkit mkoverlay


    【解决方案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 的事情。只需创建叠加视图并将其返回即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2012-01-18
      • 2011-06-04
      • 2014-09-27
      • 2017-09-13
      相关资源
      最近更新 更多