Problem w poruszaniu MKPinAnnotation na iPhone mapie

głosy
3

Buduję aplikację, która śledzi lokalizację użytkownika na mapie. Mogę wstawić kołek łatwo, ale gdy zostanie zmieniona lokalizacja, aplikacja zostanie zamknięta.

Mam zestaw współrzędnych domyślnych do 0,0 w viewDidLoad: metoda i dodałem szpilkę w tym miejscu. Zrobiłem to, ponieważ chcę, aby usunąć kołek gdy lokalizacja jest aktualizowana, a następnie włóż szpilkę ponownie na nowym miejscu.

Oto kod, który napisałem w - (void) locationManager: didUpdateToLocation: fromLocation: metody.

 [mapview removeAnnotation:myannotation]; 
 CLLocationCoordinate2D currentlocation;
 currentlocation.latitude=newLocation.coordinate.latitude;
 currentlocation.longitude=newLocation.coordinate.longitude;

 myannotation=[[[CSMapAnnotation alloc]initWithCoordinate:currentlocation annotationType:CSMapAnnotationTypeStart title:@My Location] autorelease];

 [mapview addAnnotation:myannotation];  

Tutaj myannotation jest kołek, który chcę dodać, newLocation jest aktualizowany lokalizacja i CSMapAnnotation powróci widoku opisu.

Problemem jest moja aplikacja wywala za każdym razem. Udało mi się dostać ostrzeżenie na konsoli przed upaść. Oto komunikat:

„Instancja 0x182020 klasy CSMapAnnotation jest zwalniane podczas kluczowych obserwatorzy wartości są jeszcze zarejestrowane niego. Informacji Obserwacja jest wyciekły, a nawet mogą stać się błędnie przypisane do jakiegoś innego obiektu.”

Więc plz jeśli ktoś ma do czynienia ten sam problem ...

Utwórz 10/08/2009 o 12:00
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
1

Kilka rzeczy, aby zwracać uwagę na:

  • MKMapView ma już showsUserLocationatrybut, który śledzi lokalizację użytkownika na ciebie z pulsującym niebiesko-kropka rzeczy. Jeśli chcesz, aby osobno ustawić pin na tym miejscu, można uzyskać userLocationatrybut z MapView.

  • Upaść bug może być ze względu na autoreleaserozmowy. Najprostszym sposobem, aby to naprawić jest, aby myannotationwłaściwość z retainatrybutem, a następnie wyjąć autorelease i zamiast myannotationużycia self.myannotation.

  • Nie bardzo wiadomo, co masz na myśli poprzez ustawienie „default współrzędnych 0, 0.” Jeśli są to lat / long to jesteś oddanie pin w Greenwich w Anglii :-) Tak naprawdę nie trzeba stale dodawać i usuwać adnotacje. Możesz dodać je raz, a następnie dostosować swoją pozycję w miarę potrzeb.

Odpowiedział 10/08/2009 o 19:53
źródło użytkownik

głosy
0

Właśnie doświadczył tego sam problem i to miało coś wspólnego ze współrzędnymi adnotacją. Byłem już ignorując 0,0 ale z jakiegoś powodu użytkownicy byli wprowadzania -180, -180 (być może z urządzenia, na którym mogliśmy określić lokalizację?)

Tak czy inaczej - jak tylko zacząłem ignorując -180, -180 problem odszedł. mam nadzieję że to pomoże.

Odpowiedział 07/05/2011 o 01:40
źródło użytkownik

głosy
0

Mam na myśli to nie podoba tag autorelease dla myannotation podczas dodawania adnotacji na mapie może nie być jest zatrzymywane, a następnie po prostu dealokuje i katastrofy, to co mogę myśleć patrząc na kod, który pisał. Mam nadzieję, że to pomoże

Odpowiedział 10/08/2009 o 14:21
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more