Аннотации MKMapview идут неправильно после увеличения и уменьшения масштаба - PullRequest
0 голосов
/ 13 сентября 2011

Я использую MKMapView со многими аннотациями. Все в порядке, пока я не увеличу и не уменьшу карту. Расположение некоторых аннотаций меняется друг с другом. Кто-нибудь знает почему? Вот мой код, который я вызываю после viewDidLoad для импорта аннотаций из 3 массивов: долготы, широты и photoFileName. photoFileName содержит имена файлов фотографий для всех аннотаций, долготы и широты содержат их координаты.

for (int i=0; i<[longitudes count]; i++)
CLLocation* location = [[CLLocation alloc] initWithLatitude:[latitudes objectAtIndex:i]
            longitude:[longitudes objectAtIndex:i]];
CSMapAnnotation* annotation = [[CSMapAnnotation alloc] initWithCoordinate:[location coordinate]
            annotationType:CSMapAnnotationTypeImage
            title:@"";
            subtitle:@"";

// Set data for the annotation. This data is used for displaying annotation
[annotation setUserData:[photoFilename objectAtIndex:i]];

[_mapView addAnnotation:annotation];
[annotation release];
[currentLocation release];

}

Все загружено нормально, прокрутка и масштабирование работали. Однако, когда я увеличиваю изображение карты (примерно в 5-10 раз больше), а после этого снова уменьшаю масштаб до первого размера, некоторые местоположения аннотаций изменяются (см. Нижнюю аннотацию). Я не публикую здесь функцию viewForAnnotation, потому что она не вызывается, я просто увеличиваю / уменьшаю масштаб, и это происходит. http://cC8.upanh.com/27.800.35078007.mF80/1.png http://cC9.upanh.com/27.800.35078008.AWG0/2.png

1 Ответ

1 голос
/ 19 сентября 2012

О, ты прав. Я решил проблему после того, как снова увидел функцию viewForAnnotation. В моем старом коде при вызове [mapView dequeueReusableAnnotationViewWithIdentifier: identifier] я просто устанавливаю идентификатор «Image» для всех аннотаций. Это заставляет эту функцию каждый раз получать случайную аннотацию. Решается путем указания истинного идентификатора для каждой аннотации. Спасибо за ваше предупреждение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...