¿Zoom personalizado MapKit Polyline?

Estoy tratando de aprender a usar una polilínea para conectar dos puntos en un map en ios6. En primer lugar, he leído todos los tutoriales sobre este tema que aparece una simple búsqueda en Google y no pueden hacer que las polilíneas funcionen por una razón. Cada tutorial que he visto siempre agrega la polilínea al map y ajusta el zoom del map para adaptarse a toda la línea. ¿Cómo haría para hacer y agregar una polilínea a un map en ios6 si quiero que el map se acerque a una distancia constante y solo muestre el final de la polilínea si es más grande que la vista actual? Por ejemplo, digamos que tenía una polilínea que tenía una milla de largo y quería que el map se mantuviera enfocado en una constan distacne equivelent para:

MKCoordinateRegion userRegion = MKCoordinateRegionMakeWithDistance(self.currentLocation.coordinate, 1000, 1000); [self.mainMap setRegion:[self.mainMap regionThatFits:userRegion] animated:YES]; 

¿Cómo iba a hacer esto? ¡Proporcione ejemplos de código completo o un proyecto de muestra que pueda download!

MKMapPoint * malloc / assign:

 MKMapPoint *newPoints = malloc((sizeof (MKMapPoint) * nbPoints)); newPoints[index] = varMKMapPoint; free(newPoints); 

MKPolyline debe inicializarse en lo que necesite:

 MKPolyline *polyline = [MKPolyline polylineWithPoints:newPoints count:nbPoints]; [self.mapView addOverlay:polyline]; 

para mostrar su MKPolyline, debe usar viewForOverlay:

 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { MKOverlayView* overlayView = [[MKOverlayView alloc] initWithOverlay:overlay]; if([overlay isKindOfClass:[MKPolyline class]]) { MKPolylineView *backgroundView = [[MKPolylineView alloc] initWithPolyline:overlay]; backgroundView.fillColor = [UIColor blackColor]; backgroundView.strokeColor = backgroundView.fillColor; backgroundView.lineWidth = 10; backgroundView.lineCap = kCGLineCapSquare; overlayView = backgroundView; } return overlayView; } 

Para usar este método, debes convertir tus puntos a CLLocation, devolverá una región MKCoordinate que establecerás en mapView:

 - (MKCoordinateRegion)getCenterRegionFromPoints:(NSArray *)points { CLLocationCoordinate2D topLeftCoordinate; topLeftCoordinate.latitude = -90; topLeftCoordinate.longitude = 180; CLLocationCoordinate2D bottomRightCoordinate; bottomRightCoordinate.latitude = 90; bottomRightCoordinate.longitude = -180; for (CLLocation *location in points) { topLeftCoordinate.longitude = fmin(topLeftCoordinate.longitude, location.coordinate.longitude); topLeftCoordinate.latitude = fmax(topLeftCoordinate.latitude, location.coordinate.latitude); bottomRightCoordinate.longitude = fmax(bottomRightCoordinate.longitude, location.coordinate.longitude); bottomRightCoordinate.latitude = fmin(bottomRightCoordinate.latitude, location.coordinate.latitude); } MKCoordinateRegion region; region.center.latitude = topLeftCoordinate.latitude - (topLeftCoordinate.latitude - bottomRightCoordinate.latitude) * 0.5; region.center.longitude = topLeftCoordinate.longitude + (bottomRightCoordinate.longitude - topLeftCoordinate.longitude) * 0.5; region.span.latitudeDelta = fabs(topLeftCoordinate.latitude - bottomRightCoordinate.latitude) * 1.2; //2 region.span.longitudeDelta = fabs(bottomRightCoordinate.longitude - topLeftCoordinate.longitude) * 1.2; //2 // NSLog(@"zoom lvl : %f, %f", region.span.latitudeDelta, region.span.latitudeDelta); return region; } 

Espero que esto ayude.