title: MKDirections not showing route on map in iOS
body: <p>I am working on one app, I need to show route directions between two coordinates. I have used <code>MKDirections</code> and have passed two coordinates as source and destination, however on <code>mapView</code> its not showing any route or drawing any polyline. Below is my code. In <code>MKDirections</code> its always showing <code>nil</code>. Please let me know what I am doing wrong.</p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.
      self.activityIndicator.hidden = YES;
      self.routeDetailsButton.hidden = YES;
      self.routeDetailsButton.enabled = NO;
      self.mapView.delegate = self;
      self.mapView.showsUserLocation = YES;
      self.navigationItem.title = @"RouteMaster";
  
  }
  
  #pragma mark - MapKit delegate methods
  
  - (void)mapView:(MKMapView *)aMapView didUpdateUserLocation:(MKUserLocation *)userLocation {
      CLLocationCoordinate2D loc = [userLocation.location coordinate];
      MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1000.0f, 1000.0f);
      [self.mapView setRegion:region animated:YES];
  }
  
  
  - (NSUInteger)supportedInterfaceOrientations
  {
      return UIInterfaceOrientationMaskPortrait;
  }
  
  - (IBAction)handleRoutePressed:(id)sender {
      // We're working
  
      CLLocationCoordinate2D sourceCoords = CLLocationCoordinate2DMake(28.6100, 77.2300);
      MKPlacemark *sourcePlacemark = [[MKPlacemark alloc] initWithCoordinate:sourceCoords addressDictionary:nil];
  
      MKMapItem *srcMapItem = [[MKMapItem alloc]initWithPlacemark:sourcePlacemark];
  
      CLLocationCoordinate2D destinationCoords = CLLocationCoordinate2DMake(18.9750, 72.8258);
      MKPlacemark *destinationPlacemark = [[MKPlacemark alloc] initWithCoordinate:destinationCoords addressDictionary:nil];
  
      MKMapItem *distMapItem = [[MKMapItem alloc]initWithPlacemark:destinationPlacemark];
  
      MKDirectionsRequest *request = [[MKDirectionsRequest alloc]init];
      [request setSource:srcMapItem];
      [request setDestination:distMapItem];
  
      MKDirections *direction = [[MKDirections alloc]initWithRequest:request];
      [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
  
           if (error)
               NSLog(@"Error %@", error.description);
          else
              NSLog(@"response = %@",response);
          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 Instruction : %@",[obj instructions]);
                  NSLog(@"Rout Distance : %f",[obj distance]);
              }];
          }];
      }];
  
  }
  
  #pragma mark - Utility Methods
  - (void)plotRouteOnMap:(MKRoute *)route
  {
      if(_routeOverlay) {
          [self.mapView removeOverlay:_routeOverlay];
      }
  
      // Update the ivar
      _routeOverlay = route.polyline;
  
      // Add it to the map
      [self.mapView addOverlay:_routeOverlay];
  
  }
  
  
  #pragma mark - MKMapViewDelegate methods
  - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id&lt;MKOverlay&gt;)overlay
  {
      MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
      renderer.strokeColor = [UIColor redColor];
      renderer.lineWidth = 4.0;
      return  renderer;
  }
  
  - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay {
  
      if ([overlay isKindOfClass:[MKPolyline class]]) {
          MKPolylineView* aView = [[MKPolylineView alloc]initWithPolyline:(MKPolyline*)overlay] ;
          aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
          aView.lineWidth = 10;
          return aView;
      }
      return nil;
  }
  </code></pre>