usar ubicacion rutas ruta mapas hay funciona esta disponibles disponible desde descargar como ios mapkit ios7 xcode5 mkmapitem

ubicacion - Mostrar ruta en los mapas de iOS 7: addOverlay no tiene efecto



no hay rutas disponibles desde esta ubicacion (1)

Quiero mostrar una ruta punto a punto dentro de mi mapView, uso este código para crear la ruta:

- (IBAction)backToYourCar { MKPlacemark *sourcePlacemark = [[MKPlacemark alloc] initWithCoordinate:self.annotationForCar.coordinate addressDictionary:nil]; NSLog(@"coordiante : locationIniziale %f", sourcePlacemark.coordinate.latitude); MKMapItem *carPosition = [[MKMapItem alloc] initWithPlacemark:sourcePlacemark]; MKMapItem *actualPosition = [MKMapItem mapItemForCurrentLocation]; NSLog(@"coordiante : source %f, ActualPosition %f", carPosition.placemark.coordinate.latitude ,actualPosition.placemark.coordinate.latitude); MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; request.source = actualPosition; request.destination = carPosition; request.requestsAlternateRoutes = YES; MKDirections *directions = [[MKDirections alloc] initWithRequest:request]; [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) { if (error) { NSLog(@"Error : %@", error); } else { [self showDirections:response]; //response is provided by the CompletionHandler } }]; }

Y esto para mostrar la ruta en el mapa:

- (void)showDirections:(MKDirectionsResponse *)response { for (MKRoute *route in response.routes) { [self.mapView addOverlay:route.polyline level:MKOverlayLevelAboveRoads]; } }

En realidad este código no hace nada.

Si intento imprimir la distancia de la ruta, obtengo el valor correcto:

route distance: 1910.000000

entonces la ruta es correcta, pero no entiendo por qué no aparece en el mapa.

¿Alguna sugerencia?


Después de un día de investigación he resuelto con estos 3 pasos:

  1. Establecer el delegado ( self.mapView.delegate = self ).
  2. importar el MKMapViewDelegate
  3. Implemente el nuevo método del delegado MapView para iOS7: - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay(id<MKOverlay>)overlay :

esta es mi implementacion

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { if ([overlay isKindOfClass:[MKPolyline class]]) { MKPolyline *route = overlay; MKPolylineRenderer *routeRenderer = [[MKPolylineRenderer alloc] initWithPolyline:route]; routeRenderer.strokeColor = [UIColor blueColor]; return routeRenderer; } else return nil; }

este método es llamado automáticamente por el delegado cuando agrega la polilínea en el mapa.