Проблема в продвижении MKPinAnnotation на iPhone карте

голоса
3

Я в здании приложение, которое отслеживает местоположение пользователя на карте. Я могу вставить булавку легко, но когда местоположение изменяется, приложение завершает работу.

Я установил координаты по умолчанию 0,0 в viewdidload: метод и я добавил булавку в этом месте. Я сделал это, потому что я хочу, чтобы удалить штифт, когда место обновляется, а затем вставьте палец снова на новом месте.

Вот код, который я написал в - (ничтожной) locationManager: didUpdateToLocation: fromLocation: метод.

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

Здесь myannotation является шпилькой, которую я хочу добавить, newLocation является обновленным местоположением и CSMapAnnotation вернется вид аннотаций.

Проблема в том, что мое приложение падает каждый раз. Я был в состоянии получить предупреждение на консоли, прежде чем врезаться. Вот сообщение:

«Экземпляр 0x182020 класса CSMapAnnotation в настоящее время высвобожден в то время как наблюдатели ключевого значения по-прежнему зарегистрированы с ним. Информация Наблюдения ведется утечкой, и может даже стать ошибочно привязаны к какому-то другому объекту.»

Так, плз помочь, если кто-то сталкивался с такой же проблемой ...

Задан 10/08/2009 в 12:00
источник пользователем
На других языках...                            


3 ответов

голоса
1

Несколько вещей, которые нужно посмотреть:

  • MKMapView уже имеет showsUserLocationатрибут , который отслеживает местоположение пользователя для вас с пульсирующим сине-дот вещи. Если вы хотите , чтобы отдельно установить штифт на этом месте, вы можете получить userLocationатрибут из MapView.

  • Сбой ошибка может быть из-за autoreleaseвызова. Самый простой способ исправить это сделать myannotationсвойство с retainатрибутом, а затем вынуть autorelease и вместо myannotationиспользования self.myannotation.

  • Не совсем понятно, что вы имеете в виду, установив «по умолчанию координаты 0, 0» Если это Lat / длинные позиции, то вы кладете булавку в Гринвиче, Англия :-) Вы действительно не нужно постоянно добавлять и удалять аннотации. Вы можете добавить их когда-то скорректировать свою позицию по мере необходимости.

Ответил 10/08/2009 в 19:53
источник пользователем

голоса
0

Я просто испытал это то же проблему, и это было что-то делать с координатами аннотации. Я уже не обращая внимания 0,0, но по некоторым причинам пользователей были ввод -180, -180 (возможно, от устройства, на котором мы не смогли определить местоположение?)

в любом случае - как только я начал игнорируя -180, -180 проблема ушла. надеюсь это поможет.

Ответил 07/05/2011 в 01:40
источник пользователем

голоса
0

Я имею в виду, это не нравится ваш autorelease тег для myannotation, когда вы добавляете аннотацию к карте не может быть быть сохранены, а затем он просто освобождает и аварии, вот что я могу думать, глядя на код, который вы публикуемую. Надеюсь, поможет

Ответил 10/08/2009 в 14:21
источник пользователем

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