How to draw a MKPolyline on a MapView?
Solution 1
Done.
Was a very stupid thing, i didn't set the delegate for the MapView. Simply adding [map setDelegate:self]; did the trick.
Thank you anyway!.
Solution 2
Just create MKPolyline with coordinates & add that polyLine to map view.
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[map addOverlay:polyLine];
You will find an tutorial here on how to draw polyline over some coordinates. Edit: The url does not seems valid anymore. You can find the archived version of this url here.
![Fustigador](https://i.stack.imgur.com/wNjO4.jpg?s=256&g=1)
Fustigador
Former cameraman, now developing apps for Android. Drummer, DM and Android developer (in that order)
Updated on April 15, 2020Comments
-
Fustigador about 4 years
I have an array of points to be drawn on a map, its already decoded:
- (void) drawRoute:(NSArray *) path { NSInteger numberOfSteps = path.count; CLLocationCoordinate2D coordinates[numberOfSteps]; for (NSInteger index = 0; index < numberOfSteps; index++) { CLLocation *location = [path objectAtIndex:index]; CLLocationCoordinate2D coordinate = location.coordinate; coordinates[index] = coordinate; } MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps]; [map addOverlay:polyLine]; }
where "map" is an instance of MKMapView, and path the array representing the already decoded set of points.
I thought that with the line
[map addOverlay:polyLine];
it would be drawn. I've seen in some pages this method:- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay]; polylineView.strokeColor = [UIColor redColor]; polylineView.lineWidth = 1.0; return polylineView; }
Is the polylineView what is actually drawn on map? I've tried also to pass the MKPolyline (from the method above) to the "<MKOverlay> overlay" argument of this last method, but throws an exception.
I think I'm close, but I don't know what to do now.
Please help! Thank you very much in advance.