He leído y seguido las instrucciones en How do I zoom an MKMapView to the users current location without CLLocationManager?¿Cómo se puede centrar visualmente el mapa MKMapView cuando se conoce o cambia la ubicación del usuario?
Sin embargo, aunque obtengo la ubicación actual del usuario, no puedo hacer que el mapa se centre visualmente allí.
Por ejemplo, en la función viewDidLoad, ¿cómo puedo hacer que el mapa se centre visualmente alrededor de la ubicación conocida de los usuarios? He pegado el código de CurrentLocation a continuación (Ver el comentario XXX en viewDidLoad
#import "MapViewController.h"
#import "PlacemarkViewController.h"
@implementation MapViewController
@synthesize mapView, reverseGeocoder, getAddressButton;
- (void)viewDidLoad
{
[super viewDidLoad];
// XXX HERE: How can I cause self.mapView to actually recenter itself at self.mapview.userLocation.location?
mapView.showsUserLocation = YES;
}
- (void)viewDidUnload
{
self.mapView = nil;
self.getAddressButton = nil;
}
- (void)dealloc
{
[reverseGeocoder release];
[mapView release];
[getAddressButton release];
[super dealloc];
}
- (IBAction)reverseGeocodeCurrentLocation
{
self.reverseGeocoder =
[[[MKReverseGeocoder alloc] initWithCoordinate:mapView.userLocation.location.coordinate] autorelease];
reverseGeocoder.delegate = self;
[reverseGeocoder start];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
{
NSString *errorMessage = [error localizedDescription];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Cannot obtain address."
message:errorMessage
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
PlacemarkViewController *placemarkViewController =
[[PlacemarkViewController alloc] initWithNibName:@"PlacemarkViewController" bundle:nil];
placemarkViewController.placemark = placemark;
[self presentModalViewController:placemarkViewController animated:YES];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
// we have received our current location, so enable the "Get Current Address" button
[getAddressButton setEnabled:YES];
}
@end
le gustaría que sea '' mapView.userLocation.coordinate' o mapView.userLocation.location.coordinate'. La propiedad centerCoordinate es del tipo 'CLLocationCoordinate2D'. – Anurag
¡Buena captura, Anurag! Fijo. – Tim
Gracias chicos. Así que haciendo self.mapView.centerCoordinate = self.mapView.userLocation.location.coordinate; no funciona desde ViewDidLoad. Funciona en otro lugar (como cuando se hace dentro de reverseGeocodeCurrentLocation) - DT –