Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Looking for an MKOverlayPathRenderer example

I am trying to figure out how to use a new MKOverlayPathRenderer class.

In my app I previously used MKOverlayPathView when building with iOS 6 SDK, but it does not seem to work with iOS 7 SDK unfortunately.

So I am trying to move my app from MKOverlayPathView to MKOverlayPathRenderer, but have no success so far.

MKPolylineRenderer works OK, but MKOverlayPathRenderer does not. The code gets called, but no overlay is drawn on a map.

Does anybody have a working example for MKOverlayPathRenderer?

like image 288
slavb Avatar asked Nov 12 '13 22:11

slavb


1 Answers

First you have to make sure that you set lineWidth and strokeColor

polylineRenderer.lineWidth = 8.0f;
polylineRenderer.strokeColor = [UIColor redColor];

Then In your renderer class, you have to override -(void) createPath method

-(void) createPath{
    CGMutablePathRef path = CGPathCreateMutable();
    BOOL pathIsEmpty = YES;
    for (int i=0;i< polyline.pointCount;i++){
        CGPoint point = [self pointForMapPoint:polyline.points[i]];
        if (pathIsEmpty){
            CGPathMoveToPoint(path, nil, point.x, point.y);
            pathIsEmpty = NO;
        } else {
            CGPathAddLineToPoint(path, nil, point.x, point.y);
        }
    }

    self.path = path; //<—— don't forget this line.
}

if you want custom drawing, you would like to override this

-(void) drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context method.

like image 85
wdanxna Avatar answered Oct 25 '22 03:10

wdanxna