I have to add directions among two custom locations in IOS 7.
Any one tell me please.
Thanks.
Try this:
1.Create a file named ViewController with MKMapView as an IBOutlet and connect the map view from Storyboard to MKMapView property.
[ViewController.h]
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import <MapKit/MKAnnotation.h> @interface ViewController : UIViewController <MKMapViewDelegate> @property (nonatomic, strong) IBOutlet MKMapView *mapView; @end
[ViewController.m]
#import "ViewController.h" #import "Annotation.h" #define Location1Latitude -12.429481 #define Location1Longitude 130.863324 #define Location2Latitude -32.15037 #define Location2Longitude 115.782909 @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.mapView.delegate = self; [self.mapView setMapType:MKMapTypeStandard]; [self.mapView setZoomEnabled:YES]; [self.mapView setScrollEnabled:YES]; //Annotation NSMutableArray * locations = [[NSMutableArray alloc] init]; CLLocationCoordinate2D location; Annotation * myAnn; // Location 1 Annotation myAnn = [[Annotation alloc] init]; location.latitude = Location1Latitude; location.longitude = Location1Longitude; [locations addObject:myAnn]; //Location 2 Annotation myAnn = [[Annotation alloc] init]; location.latitude = Location2Latitude; location.longitude = Location2Longitude; myAnn.coordinate = location; [locations addObject:myAnn]; [self.mapView addAnnotations:locations]; [self performSelector:@selector(drawRoute) withObject:self afterDelay:1.0]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)drawRoute { MKPlacemark *source = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(Location1Latitude, Location1Longitude) addressDictionary:nil]; MKMapItem *srcMapItem = [[MKMapItem alloc]initWithPlacemark:source]; [srcMapItem setName:@"source"]; MKPlacemark *destination = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(Location2Latitude, Location2Longitude) addressDictionary:nil ]; MKMapItem *destMapItem = [[MKMapItem alloc]initWithPlacemark:destination]; [destMapItem setName:@"dest"]; MKDirectionsRequest *request = [[MKDirectionsRequest alloc]init]; [request setSource:srcMapItem]; [request setDestination:destMapItem]; [request setTransportType:MKDirectionsTransportTypeAutomobile]; MKDirections *direction = [[MKDirections alloc]initWithRequest:request]; [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) { NSLog(@"response = %@ \n eror %@",response, error); NSArray *arrRoutes = [response routes]; [arrRoutes enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { MKRoute *rout = obj; MKPolyline *line = [rout polyline]; [self.mapView addOverlay:line]; NSLog(@"Rout Name : %@",rout.name); NSLog(@"Total Distance (in Meters) :%f",rout.distance); NSArray *steps = [rout steps]; NSLog(@"Total Steps : %lu",(unsigned long)[steps count]); [steps enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"Rout Distance : %f",[obj distance]); NSLog(@"Rout Instruction : %@",[obj instructions]); }]; }]; }]; } - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay { MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay]; renderer.strokeColor = [UIColor colorWithRed:55.0/255.0 green:160.0/255.0 blue:250.0/255.0 alpha:1.0]; renderer.lineWidth = 4.0; return renderer; }
2.Create a file named Annotation.
[Annotation.h]
#import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface Annotation : NSObject <MKAnnotation> @property(nonatomic, assign) CLLocationCoordinate2D coordinate; @property(nonatomic, copy) NSString * title; @property(nonatomic, copy) NSString * subtitle; @property(nonatomic, copy) NSString * imageName; @end
[Annotation.m]
#import "Annotation.h" @implementation Annotation @end
Try this:
1.Create a file named ViewController with MKMapView as an IBOutlet and connect the map view from Storyboard to MKMapView property.
[ViewController.h]
[ViewController.m]
2.Create a file named Annotation.
[Annotation.h]
[Annotation.m]