Intento trazar un mapa usando lat, lng para una base de datos sqlite, pero CANT obtiene mi ubicación antes de que se dibuje el mapa. UGGG!

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

  •  06-07-2019
  •  | 
  •  

Pregunta

Lo que puedo hacer: Toma una base de datos sqlite de 100 puntos de latencia y lng, y coloca esos pines en un mapa. ¡Se ve genial!

Lo que me gustaría hacer es obtener mi ubicación, ANTES de dibujar mi mapa. Pero parece que:

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

SIEMPRE se dispara DESPUÉS de (se anula) se ejecuta viewDidLoad. NO IMPORTA donde lo inserto.

Lo que necesito hacer es tener una pantalla de inicio, PARAR allí hasta que obtenga una ubicación, usar ese lat y lng para buscar en mi base de datos sqlite DB de ubicaciones dentro de tantas millas de mí.

Aquí está mi rastro:

  
    
      

Ingresando - [RootViewController initWithTabBar]

             

Ingresando - [RootViewController viewDidLoad]

             

Ingresando - [RootViewController locationManager: didUpdateToLocation: fromLocation:]

    
  

Y esto es lo que realmente quiero:

  
    
      

Ingresando - [RootViewController initWithTabBar]

             

Ingresando - [RootViewController locationManager: didUpdateToLocation: fromLocation:]

             

Ingresando - [RootViewController viewDidLoad]

    
  

Ahora estoy pensando (trabajando con un tabbarcontroller), ¿tengo que empujar esto de vuelta a mi delegado de aplicaciones? ¿Congelar toda la aplicación hasta que obtenga una ubicación? Esos son mis últimos pensamientos.

Gracias por cualquier consejo, clientes potenciales, fragmentos ... !!! Llevo días buscando, sin suerte.

gracias !!!!

¿Fue útil?

Solución

Definitivamente no quieres " congelar " La aplicación, y definitivamente desea hacer el menor trabajo posible con el método applicationDidFinishLaunching: de su delegado de aplicación. Lo que podría recomendar:

  • Tiene dos vistas: una es la " real " ver con el mapa, (presumiblemente) controlado por algún controlador de vista. El otro es solo un simple " esperando " ver con un mensaje al usuario y un UIActivityIndicatorView , o algo así.
  • Cuando se inicie su aplicación, cargue y muestre la vista en espera en la ventana de su aplicación, y saque al administrador de ubicación para encontrar la ubicación actual del usuario.
  • Cuando tenga suficiente información de ubicación, cargue la vista real, agréguela a la ventana y elimine la vista en espera. (Tal vez con una buena animación cross-fade o algo así.)

También puede agregar ambas vistas, y simplemente cambiar sus propiedades hidden en el momento adecuado. Pero el punto es darle al usuario algo que ver, mientras no se intenta combatir la naturaleza inherentemente asíncrona de la Ubicación del Núcleo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top