Problemă în mișcare MKPinAnnotation pe iPhone hartă

voturi
3

Sunt construirea unei aplicații care urmărește locația utilizatorului pe hartă. Pot insera un cod PIN ușor, dar atunci când locația este schimbat, aplicația se închide.

Am stabilit coordonatele implicite la 0,0 în viewdidload: metoda și am adăugat un cod PIN la acea locație. Am făcut acest lucru pentru că vreau să eliminați PIN-ul atunci când locația este actualizată și apoi introduceți PIN-ul nou pe locație nouă.

Aici este codul pe care l-am scris în - (void) locationManager: didUpdateToLocation: fromLocation: metoda.

 [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];  

Aici, myannotation este PIN-ul pe care doresc să adaug, newLocation este locația actualizată și CSMapAnnotation va reveni vedere adnotată.

Problema este aplicația mea se blochează de fiecare dată. Am fost capabil de a primi mesajul de avertizare de pe consola înainte de crashing. Aici este mesajul:

„O instanță 0x182020 de clasa CSMapAnnotation este deallocated în timp ce observatorii de valoare cheie sunt încă înregistrate cu ea. Info de observare este scurgeri, și poate chiar deveni greșit atașat la un alt obiect.“

Deci, plz ajutor în cazul în care cineva sa confruntat cu aceeași problemă ...

Întrebat 10/08/2009 la 12:00
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Câteva lucruri pentru a privi afară pentru:

  • MKMapView are deja un showsUserLocationatribut care urmărește locația utilizatorului pentru tine cu pulsarea lucru-punct albastru. Dacă doriți să setați un cod PIN separat pe acea locație, puteți obține userLocationatributul de mapview.

  • Bug - ul crashing ar putea fi din cauza autoreleaseapelului. Cel mai simplu mod de a remedia problema este de a face myannotationo proprietate cu un retainatribut, apoi scoate AutoreleasePool și în loc de myannotationutilizare self.myannotation.

  • Nu este foarte clar ce vrei să spui prin setarea „implicit coordonatele la 0, 0.“ Dacă acestea sunt lat / tânjește atunci te pune un cod PIN din Greenwich, Anglia :-) Nu într-adevăr nevoie să adăugați în mod continuu și de a elimina adnotări. Aveți posibilitatea să adăugați-le o dată, apoi ajusta poziția lor în funcție de necesități.

Publicat 10/08/2009 la 19:53
sursa de către utilizator

voturi
0

Tocmai am experimentat aceeași problemă și a avut ceva de-a face cu coordonatele adnotată. Am fost deja ignorând 0,0, dar pentru un motiv oarecare utilizatori au fost introducerea -180, -180 (poate de la un dispozitiv unde am putut determina locația?)

oricum - de îndată ce am început ignorarea -180, -180 problema a plecat. Sper că acest lucru vă ajută.

Publicat 07/05/2011 la 01:40
sursa de către utilizator

voturi
0

Mă gândesc că nu este place eticheta AutoreleasePool pentru myannotation, atunci când adăugați adnotarea pe hartă nu poate fi retinandu, și apoi doar deallocates și accident, asta e ceea ce se poate gândi la uita la codul curent. Sper ca ajuta

Publicat 10/08/2009 la 14:21
sursa de către utilizator

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