Estoy tratando de mostrar la ubicación actual del usuario estableciendo la propiedad de MKMapView
es decir setShowsUserLocation
a YES
. Como por defecto aparece una flecha en la parte superior izquierda de la pantalla del iPhone cuando la aplicación comienza a actualizar la ubicación del usuario. Pero luego de mostrar la ubicación actual, la flecha debería desaparecer, pero aún está presente mientras la aplicación esté funcionando, lo que significa que la aplicación actualizar la ubicación en el fondo? Entonces, ¿cómo puedo dejar de actualizar la ubicación actual? He implementado el delegado, que es llamada de inmediato ..¿Mostrar la ubicación actual del usuario con MKMapView?
Respuesta
Si el mapa es visible y tiene showUserLocation establecido en SÍ, continúa actualizándose en segundo plano.
Debe desactivar esto cuando la vista desaparece o cuando la aplicación se pone en segundo plano. Probablemente la mejor forma sea registrar su viewController para recibir notificaciones de UIApplicationDidEnterBackgroundNotification
y UIApplicationDidBecomeActiveNotification
.
- (void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appToBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification object:nil];
}
Luego, en el método llamado de la presente notificación, cambiar las propiedades de vista de mapa con respecto userLocation
:
- (void)appToBackground{
[mapview setShowsUserLocation:NO];
}
Y
- (void)appReturnsActive{
[mapview setShowsUserLocation:YES];
}
Compruebe que estos métodos son de hecho llamados por el establecimiento de un punto de interrupción allí y volviendo a la pantalla de inicio.
Puede detener la actualización de la ubicación mediante el envío de un mensaje al administrador de la ubicación [self.locationManager stopUpdatingLocation];
cuanto a su caso, ¿trató de dejar de mostrar la ubicación de los usuarios?
no estoy usando ningún administrador de ubicación ... si lo detengo, también oculta la anotación (ubicación) – hemant
Intenta implementar 'CLLocationManagerDelegate', tendrás una mejor manera de controlar CoreLocation Framework. Puede encontrar un buen tutorial de inicio aquí: http://www.switchonthecode.com/tutorials/getting-your-location-in-an-iphone-application –
Estoy de acuerdo con Michael Kernahan, estoy bastante seguro de que hay una condición de carrera dentro de MKMapView
.
MKMapView
parece que intenta eliminar el userLocationAnnotation
(el punto azul) por sí solo tan pronto como se da cuenta de que ha perdido el acceso a los servicios de ubicación.
Sin embargo, eso no parece protegida y si el desarrollador también emite un [mapView setShowsUserLocation:NO]
, es muy probable que obtenga un accidente debido a la carrera entre la rosca interior MKMapView
's tratando de eliminar el userLocationAnnotation
, y el hilo que está llamando setShowsUserLocation:NO
.
De acuerdo. Esto parece ser un problema en iOS 7.x en particular. No creo haberlo visto todavía en 8.x. – Kevin
- 1. cómo mostrar la ubicación actual en MKMapView
- 2. Obtener usuario ubicación actual en MKMapView
- 3. MKMapView: en la ubicación del usuario de inicio -> zoom
- 4. Obtener la ubicación del usuario desde un MKMapView
- 5. ¿Cómo centrar mi ubicación actual en MKMapView?
- 6. Seguimiento suave de la ubicación del usuario en MKMapView
- 7. ¿Cómo inicializar MKMapView con una ubicación de usuario determinada?
- 8. aplicación para el iPhone: Preguntas sobre la interacción entre CLLocationmanager y MKMapView (que muestran la ubicación del usuario actual)
- 9. Obtener la ubicación actual del usuario en PHP
- 10. Android: icono predeterminado para la ubicación actual del usuario?
- 11. Quiero encontrar la ubicación actual del usuario en php
- 12. MKMapView ubicación actual que muestra como pines personalizados
- 13. MKMapView -> mostrar un botón para mi ubicación
- 14. ¿Cómo elimino todas las anotaciones de MKMapView excepto la anotación de ubicación del usuario?
- 15. MKMapView Mostrar Guardados incorrectamente región
- 16. Cómo seguir la ubicación del usuario con MapKit
- 17. GWT: Ubicación del usuario
- 18. Eclipse: ¿Obtiene la ubicación del archivo actual?
- 19. ¿Detecta moneda según la ubicación del usuario?
- 20. ¿Cómo puedo determinar si la ubicación actual del usuario está dentro de mi MKCoordinateRegion?
- 21. Cómo evitar que MKMapView vuelva a enfocar y volver a centrar continuamente en la ubicación del usuario
- 22. Cómo trazar (mostrar) la ubicación del usuario en la imagen? IOS
- 23. MySQL - ¿CÓMO MOSTRAR LA LISTA DE PROCESOS solo con los procesos del usuario actual?
- 24. ¿Detecta cuando un usuario desplaza MKMapView una cierta distancia?
- 25. PHP mostrar la ruta actual del servidor
- 26. iPhone MapKit: seleccione la ubicación (coordenadas) manualmente tocando MKMapView
- 27. ¿Cómo se puede centrar visualmente el mapa MKMapView cuando se conoce o cambia la ubicación del usuario?
- 28. Cómo mostrar MKOverlay en MKMapView
- 29. Calcular la distancia entre la ubicación del usuario y una ubicación fija
- 30. Android: obtención confiable de la ubicación actual
He estado utilizando este método, pero estoy obteniendo lo que parece ser un accidente de condición de carrera cuando se ingresa el fondo: '[MKMapView (UserPositioning) stopUpdatingUserLocation]' llama '[MKMapView (UserPositioningInternal) removeUserLocation]' que explota con un SIGSEGV. ¿No crees que ya has visto/resuelto esto? –
necesita eliminar el observador cuando 'viewDidUnload'? – Raptor
@MichaelKernahan Estoy recibiendo el mismo problema. ¿Encontraste alguna solución? – horsejockey