Sto cercando di tracciare una mappa usando lat, lng per un DB sqlite, ma CANT ottiene la mia posizione prima che la mappa venga disegnata. Uggg!

StackOverflow https://stackoverflow.com/questions/1621266

  •  06-07-2019
  •  | 
  •  

Domanda

Cosa posso fare: Prendi un DB sqlite di 100 punti lat e lng e rilascia quei pin su una mappa. Sembra FANTASTICO!

Quello che vorrei fare è ottenere la mia posizione, PRIMA di disegnare la mia mappa. Ma sembra che:

  • (void) locationManager: (CLLocationManager *) manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation

SEMPRE si spegne DOPO (vuoto) viewDidLoad viene eseguito. NO MATTER dove lo inserisco.

Quello che devo fare è avere una schermata iniziale, FERMARCI finché non ottengo una posizione, usare quel lat e lng per cercare il mio DB sqlite di posizioni entro così tante miglia da me.

Ecco la mia traccia:

  
    
      

Invio - [RootViewController initWithTabBar]

             

Invio - [RootViewController viewDidLoad]

             

Invio - [RootViewController locationManager: didUpdateToLocation: fromLocation:]

    
  

Ed ecco quello che voglio davvero:

  
    
      

Invio - [RootViewController initWithTabBar]

             

Invio - [RootViewController locationManager: didUpdateToLocation: fromLocation:]

             

Invio - [RootViewController viewDidLoad]

    
  

Ora sto pensando (lavorando con un tabbarcontroller), devo in qualche modo riportarlo al delegato della mia app? Congelare l'intera app fino a quando non ottengo una posizione? Questi sono i miei ultimi pensieri.

grazie per eventuali suggerimenti, lead, frammenti ... !!! Ho cercato giorni, senza fortuna.

grazie !!!!

È stato utile?

Soluzione

Non vuoi assolutamente " congelare " l'app e sicuramente vuoi fare il minor lavoro possibile nel metodo applicationDidFinishLaunching: del delegato della tua app. Cosa potrei raccomandare:

  • Hanno due viste: una è la "reale" visualizzare con la mappa (presumibilmente) controllata da un controller di visualizzazione. L'altro è solo un semplice "attesa" visualizzare con un messaggio per l'utente e un UIActivityIndicatorView o qualcosa del genere.
  • Quando l'app viene avviata, carica e visualizza la vista di attesa nella finestra dell'app e avvia il gestore della posizione per trovare la posizione corrente dell'utente.
  • Quando hai abbastanza informazioni sulla posizione, carica la vista reale, aggiungila alla finestra e rimuovi la vista di attesa. (Forse con una bella animazione con dissolvenza incrociata o qualcosa del genere.)

Puoi anche aggiungere entrambe le viste e capovolgere le loro proprietà nascoste al momento giusto. Ma il punto è dare all'utente qualcosa da guardare, senza cercare di combattere la natura intrinsecamente asincrona di Core Location.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top