I am developing an application that has two versions. One for web and another for iPhone.
In the web app, I am able to draw a route on the road (drawing the route automatically that follows roads/highways) and off road (draw direct line between two specific points).
Is there an API, for iPhone, that can be used to draw a route on the map? I am able to draw a straight line on the map between two nodes, but i am not able to draw a road map route in iPhone.
I am using iPhone 3.0 and SDK 3.0
Thanks.
Maybe you want to take a look at Craig Spitzkoff's MapLinesAndAnnotations sample that he recently wrote:
- Drawing polyines or routes on a MKMapView (Using Map Kit on the iPhone)
- Using MKAnnotation, MKPinAnnotationView and creating a custom MKAnnotationView in an MKMapView
there's a new API in iOS4 called MKOverlayPathView which does exactly this.
MKOverlayPathView
I just wanted to update this post with this information so people get the whole story.
use this url to create a json/xml file
http://maps.googleapis.com/maps/api/directions/output?parameters (read code.google.com/apis/maps/documentation/directions/ for more reference)
parse the json/xml file
in routes - legs - steps - polyline you can see points which are in encoded format
decode those points (refer http://fkn1337.com/decode-google-maps-polylines-objective-c/) and make a CLLocationCoordinate2D array
Use
(MKPolyline *)polylineWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count
for creating an MKPolyline object
6 Using MKMapview's addOverlay we can create an overlay with direction
Unfortunately, there is no API for that in 3.0. You will probably have to add an overlay on the MKMapView, but that's probably very tedious
A standard way on the iPhone (since there are restrictions expressed in the MapKit license) is to use [[[UIApplication sharedApplication] delegate] openURL:myURL];
to open up the Maps app.
myURL is a 'http://maps.google.com/maps?...' URL (NSURL object) with the subset of options supported in the docs on developer.apple.com. You use the saddr= and daddr= parameters to set the start and end address (or coordinates) of the route, and the user can then see the route and use the Maps app's driving, biking, or walking text directions to travel the route. Perhaps on iPhone 4 GM you will be able to return to your program, but currently opening the URL will terminate your app and start the Maps (or Safari, if Maps is not installed) app instead.
Some Addition to Question Might be:
HOW CAN ONE GET THOSE COORDINATES DYNAMICALLY, WHICH ARE USED TO DRAW PATH, IN THE EXAMPLE Craig Spitzkoff's MapLinesAndAnnotations sample....? (Getting coordinates between two locations from google maps).
Use the following link: MapWithRoute
Hope, this one would help you draw the route using two user defined location.