2010-05-22 10 views
3

У меня проблемы с обновлением местоположения аннотации с разными координатами. Есть ли способ изменить свойство местоположения, не создавая другой аннотации? Я пробовал код ниже без везения. Аннотирование, которое я пытаюсь получить, не обновляет его местоположение. Пожалуйста помоги!Как обновить местоположение MKAnnotation с новыми координатами?

CLLocationCoordinate2D location; 
location.latitude = -36.560976; 
location.longitude = -59.455807; 

for (id annotation in self.mapView.annotations) { 

    if ([annotation isKindOfClass:[MyAnnotation class]]) 
    { 
      [annotation setCoords:location]; //setCoords is defined in MyAnnotation class 
      } 
    } 

Спасибо всем!

ответ

-1

Вам необходимо удалить аннотацию и добавить ее снова после изменения ее координат или заменить ее на новую. MapKit не предполагает, что аннотации могут быть изменчивыми.

-1

Вам не нужно удалять аннотацию, а затем повторно добавлять ее, чтобы обновить местоположение аннотации на карте.

MapView, к которому вы добавили свою аннотацию, должен позаботиться о ваших изменениях местоположения. Не видя больше кода, я думаю, что проблема, с которой вы сталкиваетесь, может заключаться в том, что в вашей аннотации используется переменная location, а не переменная coordinate.

Протокол MKAnnotation требует, чтобы в классе аннотаций была реализована переменная экземпляра CLLocationCoordinate2D coordinate. Он также рекомендует синтезировать свойство координат.

Попробуйте добавить переменную экземпляра CLLocationCoordinate2D coordinate и его соответствующее свойство @property (assign, nonatomic) CLLocationCoordinate2D coordinate в свой класс аннотаций .h. Затем используйте файл @synthesize в вашем файле .m-файла аннотации.

Если это не поможет решить вашу проблему, возможно, вам придется добавить дополнительную информацию к своему вопросу.

+1

Это решение не работает. См. Http://stackoverflow.com/questions/2256177/how-to-move-a-mkannotation-without-adding-removing-it-from-the-map/5017332#5017332 – Willster

3

Продлить MKPointAnnotation, имеет возможность автоматического обновления представления аннотаций на карте к новым координатам.

@interface MyAnnotation : MKPointAnnotation 
+0

Какой метод я реализую, когда я расширяю Это? – user3916570

+0

Вы можете использовать его прямо, как я думаю – malhal

+0

Не могли бы вы показать его с помощью кода. –

Смежные вопросы