I am trying to figure out a way to get all the latitude and longitude points from a MKPolyline drawn on a MKMapView on an iOS app.
I know the MKPolyline does not store latitude and longitude points, but I am looking for a way to build an array of lat and long the MKPolyline would touch on the map.
Anybody has specific possible solutions on this?
Thank you
EDIT: After seeing the first response (thank you) I think I need to explain better what my code is doing:
That's all.
So, I already have a polyline built for me. So I would like to get all the points found in the polyline somehow and map them to a lat and long...
To get coordinates of the polyline from an MKRoute
, use the getCoordinates:range:
method.
That method is in the MKMultiPoint
class which MKPolyline
inherits from.
That also means this works for any polyline -- whether it was created by you or by MKDirections
.
You allocate a C array big enough to hold the number of coordinates you want and specify the range (eg. all points starting from the 0th).
Example:
//route is the MKRoute in this example
//but the polyline can be any MKPolyline
NSUInteger pointCount = route.polyline.pointCount;
//allocate a C array to hold this many points/coordinates...
CLLocationCoordinate2D *routeCoordinates
= malloc(pointCount * sizeof(CLLocationCoordinate2D));
//get the coordinates (all of them)...
[route.polyline getCoordinates:routeCoordinates
range:NSMakeRange(0, pointCount)];
//this part just shows how to use the results...
NSLog(@"route pointCount = %d", pointCount);
for (int c=0; c < pointCount; c++)
{
NSLog(@"routeCoordinates[%d] = %f, %f",
c, routeCoordinates[c].latitude, routeCoordinates[c].longitude);
}
//free the memory used by the C array when done with it...
free(routeCoordinates);
Depending on the route, be prepared for hundreds or thousands of coordinates.