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
?
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.