Próbuję pokazać bieżące położenie użytkownika, ustawiając właściwość MKMapView
, tj. setShowsUserLocation
na YES
. Domyślnie strzałka pojawia się w lewym górnym rogu ekranu iPhone'a, gdy aplikacja zaczyna aktualizować lokalizację użytkownika. Jednak po wyświetleniu bieżącej lokalizacji strzałka powinna zniknąć, ale nadal jest obecna tak długo, jak aplikacja jest uruchomiona, co oznaczałoby, że aplikacja jest nadal aktualizowanie lokalizacji w tle? więc jak mogę zatrzymać aktualizację bieżącej lokalizacji? I wprowadziły delegata, który zostaje powołany natychmiast ..Pokaż aktualną lokalizację użytkownika za pomocą MKMapView?
Odpowiedz
Jeśli mapa jest widoczna i parametr showUserLocation jest ustawiony na wartość YES, będzie on nadal aktualizowany w tle.
Należy usunąć to ustawienie, gdy widok zniknie lub gdy aplikacja przejdzie do tła. Najlepszym sposobem byłoby prawdopodobnie zarejestrowanie swojego kontrolera viewController w celu otrzymania powiadomienia o numerach UIApplicationDidEnterBackgroundNotification
i 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];
}
Następnie w metodzie zwanej przez tego powiadomienia, zmienić właściwości mapa dotyczące userLocation
:
- (void)appToBackground{
[mapview setShowsUserLocation:NO];
}
And
- (void)appReturnsActive{
[mapview setShowsUserLocation:YES];
}
Sprawdź, czy te metody są rzeczywiście zwany przez ustawienie punktu przerwania tam i powracając do ekranu głównego.
można zatrzymać aktualizację lokalizację wysyłając wiadomość do lokalizacji menedżer [self.locationManager stopUpdatingLocation];
W Twoim przypadku, nie próbować zatrzymać pokazując lokalizację użytkowników?
Nie używam żadnego menedżera lokalizacji. Jeśli to zatrzymam, ukrywa on również adnotację (lokalizację). – hemant
Spróbuj wprowadzić 'CLLocationManagerDelegate', będziesz mieć lepszy sposób kontrolowania CoreLocation Framework. Możesz znaleźć dobry tutorial początkowy tutaj: http://www.switchonthecode.com/tutorials/getting-your-location-in-an-iphone-application –
Zgadzam się z Michaelem Kernahanem, jestem prawie pewien, że w wyścigu jest MKMapView
.
MKMapView
wydaje się próbować usunąć samodzielnie userLocationAnnotation
(niebieską kropkę), gdy tylko zorientuje się, że stracił dostęp do usług lokalizacyjnych.
jednak, że nie wydaje się być chronione i jeśli deweloper wystawia również [mapView setShowsUserLocation:NO]
, to jest bardzo prawdopodobne, aby uzyskać awarii z powodu wyścigu między gwintem wewnętrznym MKMapView
„s próbuje usunąć userLocationAnnotation
i wątek, który dzwoni setShowsUserLocation:NO
.
Uzgodnione. Wydaje się, że jest to szczególnie problem w iOS 7.x. Nie sądzę, że widziałem go już 8.x. – Kevin
- 1. Jak korzystać z "Pokaż lokalizację użytkownika" MKMapView w iOS8?
- 2. Jak śledzić lokalizację użytkownika za pomocą MapKit
- 3. Jak wyśrodkować moją bieżącą lokalizację w MKMapView?
- 4. Android najlepszym sposobem, aby uzyskać aktualną lokalizację
- 5. Jak znaleźć swoją aktualną lokalizację CoreLocation
- 6. Lokalizacja użytkownika MKMapView pokazująca 0,0 w symulatorze?
- 7. Jak zainicjować MKMapView z określoną lokalizacją użytkownika?
- 8. Jak mogę programowo uzyskać aktualną lokalizację w Androidzie?
- 9. Jak uzyskać aktualną lokalizację w Google Maps API V2
- 10. Jak uzyskać aktualną datę za pomocą jquery?
- 11. Skreślić tweety przez tweet lokalizację i lokalizację użytkownika
- 12. Płynna obserwacja lokalizacji użytkownika w MKMapView
- 13. Jak automatycznie znaleźć lokalizację użytkownika?
- 14. Jak wyłączyć interakcje użytkownika z MKMapView?
- 15. Android: uzyskaj aktualną lokalizację od najlepszego dostępnego dostawcy
- 16. uzyskać aktualną lokalizację szybko i raz w Androidzie
- 17. Czy można uzyskać aktualną lokalizację $ w dyrektywie w Angular JS?
- 18. Jak uzyskać aktualną lokalizację w GoogleMap przy użyciu usługi FusedLocationProviderClient
- 19. Pokaż tylko zakładki za pomocą akcjiBarSherlock
- 20. Pokaż/ukryj obraz za pomocą JavaScriptu
- 21. Pokaż/ukryj skrypt za pomocą javascript
- 22. iOS - MKMapView adnotacja miejsca za pomocą adresu zamiast szerokości/długości
- 23. MKMapView initWithFrame nie zwalnia pamięci za pomocą ARC
- 24. jak uzyskać aktualną otwartą aplikację użytkownika?
- 25. SharePoint uzyskać aktualną nazwę konta użytkownika?
- 26. Zdobądź aktualną nazwę użytkownika w Julia (Linux)
- 27. Jak wyświetlić lokalizację użytkownika, jak na facebooku?
- 28. Pokaż interfejs użytkownika natywnej rozmowy na iOS dla wychodzących połączeń VoIP za pomocą CallKit
- 29. Menedżer MKMapView i CLLocationManager
- 30. Jak ustawić lokalizację przechwyconego zdjęcia za pomocą UIImagePickerController?
Używam tej metody, ale dostaję co zdaje się być zawieszeniem stanu wyścigu podczas wchodzenia w tło: '[MKMapView (UserPositioning) stopUpdatingUserLocation]' wywołuje '[MKMapView (UserPositioningInternal) removeUserLocation]' który wysadza się z SIGSEGV. Nie sądzisz, że już to widziałeś/rozwiązałeś? –
trzeba usunąć obserwatora, gdy 'viewDidUnload'? – Raptor
@MichaelKernahan Dostaję ten sam problem. Czy kiedykolwiek znalazłeś rozwiązanie? – horsejockey