/ / iOS: come posso aggiornare la posizione dell'utente MKMapView ogni volta che l'utente carica l'app: ios, iphone, mkmapview, xcode5

iOS: Come posso aggiornare la posizione dell'utente di MKMapView ogni volta che l'utente carica l'app: ios, iphone, mkmapview, xcode5

Sto implementando MKMapView e funziona bene quando l'utente carica l'app per la prima volta, ma dopo non aggiorna le posizioni dell'utente anche quando l'utente torna dallo sfondo.

Questa parte del mio codice:

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

Ho provato a implementare il codice sopra in viewWillAppear per vedere se si ricarica ogni volta che l'utente carica l'app, ma non ha funzionato.

qualcuno di voi sa ha idea di come ricaricare la visualizzazione mappa ogni volta che viene caricata l'app?

Ti ringrazio del tuo aiuto.

risposte:

1 per risposta № 1

È possibile utilizzare il seguente metodo delegato per questo:

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

0 per risposta № 2

Non è chiaro cosa intendi per "non" aggiorna la posizione dell'utente "e" ricarica ", quindi presumo che ciò che desideri sia ricentrare la mappa sulla posizione corrente dell'utente al momento del ricaricamento.

Innanzitutto, per attivare le cose, avrai bisogno del codice nel metodo applicationDidBecomeActive: o applicationWillEnterForeground: di AppDelegate. Questa è la tua notifica di "trigger" in cui puoi avviare l'azione.

Quindi, per ricentrare sulla posizione corrente, qualcosa come:

- (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:La classe "LocationManager" è una mia classe separata che gestisce solo la registrazione per le notifiche sulla posizione da iOS e il mantenimento della posizione segnalata più di recente. Se hai bisogno di aiuto, è tutta una domanda pazzesca ... :-)


0 per risposta № 3

La tua soluzione è la notifica. Prova a implementare quanto segue

//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 per risposta № 4

nel tuo ViewController "s viewDidLoad aggiungi un osservatore a se l'utente sta caricando di nuovo l'app e scrivi il codice nel metodo per aggiornare la visualizzazione della mappa

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

nel metodo dealloc rimuovere l'osservatore

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