/ / iOS: como atualizar a localização do usuário MKMapView toda vez que o usuário carrega o aplicativo - ios, iphone, mkmapview, xcode5

iOS: Como posso atualizar a localização do usuário do MKMapView toda vez que o usuário carrega o aplicativo - ios, iphone, mkmapview, xcode5

Estou implementando o MKMapView e funciona bem quando o usuário carrega o aplicativo pela primeira vez, mas depois disso ele não atualiza os locais do usuário, mesmo quando o usuário volta do segundo plano.

Esta parte do meu código:

- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate=self;
self.mapView.zoomEnabled = YES;
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
self.mapView.zoomEnabled = YES;
self.mapView.showsUserLocation = YES;
}

Tentei implementar o código acima no viewWillAppear para ver se ele é recarregado toda vez que o usuário carrega o aplicativo, mas não funcionou.

algum de vocês conhece alguma idéia de como recarregar a visualização de mapa toda vez que o aplicativo é carregado?

Eu realmente aprecio sua ajuda.

Respostas:

1 para resposta № 1

Você pode usar o método delegado abaixo para isso:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
}

0 para resposta № 2

É um pouco claro o que você quer dizer com "não atualiza a localização do usuário" e "recarrega", por isso estou assumindo que o que você deseja é centralizar novamente o mapa na localização atual do usuário ao recarregar.

Primeiro, para acionar as coisas, você precisará de código no método applicationDidBecomeActive: AppDelegate ou applicationWillEnterForeground:. Essa é a sua notificação "acionadora", na qual é possível iniciar a ação.

Em seguida, para os mais recentes na localização atual, algo como:

- (void) _putMapToCurrentlLocation
{
CLLocation* location = [[LocationManager sharedInstance] currentLocation];

MKCoordinateRegion newRegion;
newRegion.span.latitudeDelta = 0.13;
newRegion.span.longitudeDelta = 0.12;
newRegion.center.latitude = location.coordinate.latitude - (0.2*newRegion.span.latitudeDelta);
newRegion.center.longitude = location.coordinate.longitude;

[self.mapView setRegion:newRegion animated:YES];

self.mapView.showsBuildings = YES;
self.mapView.showsPointsOfInterest = YES;
self.mapView.showsUserLocation = YES;
}

Nota: A classe "LocationManager" é uma classe separada que só lida com o registro de notificações de localização do iOS e com a localização relatada mais recentemente. Se você precisar de ajuda com isso, é uma pergunta totalmente insana… :-)


0 para resposta № 3

Sua solução é a notificação. Tente implementar o abaixo

//appdelegate.m
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if([[UIApplication sharedApplication] applicationState]==UIApplicationStateActive)
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"applicationEnterForeground" object:self];
}
}

//yourViewController.m
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadMapView) name:@"applicationEnterForeground" object:nil];
}

-(void)reloadMapView
{
NSLog(@"Reload your map view here");
}

-1 para resposta № 4

no seu ViewController "s viewDidLoad método adicione um observador se o usuário estiver carregando o aplicativo novamente e escreva seu código no método para atualizar a visualização do mapa

[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(yourMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];

no método dealloc remover observador

- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:Nil];
}