Изменение размера пользовательского MKAnnotationView в соответствии с уровнем масштабирования MapKit - PullRequest
3 голосов
/ 29 ноября 2010

Вот ситуация: Я отображаю изображения на карте с помощью пользовательских аннотаций. Все работает нормально, но я хотел бы улучшить его визуально, изменив размер AnnotationView, чтобы он уменьшался при уменьшении карты . Я хочу сделать это, потому что, очевидно, больше аннотаций заполняют экран и должны быть сокращены, чтобы они не слишком сильно перекрывали друг друга, и пользователь мог видеть больше аннотаций. (Конечно, я хотел бы увеличить AnnotationViews, когда карта снова будет увеличена).

Я добился этого, удалив все аннотации с карты и добавив их снова, когда вызывается regionDidChangeAnimated. Однако эти изображения загружаются из Интернета, поэтому загрузка изображений снова (так как аннотации были удалены), кажется, не имеет смысла.

Я надеюсь, что хорошо объяснил ситуацию, и надеюсь внести свой вклад в SO в будущем.

Заранее спасибо.

P.S. Я разрабатываю с iOS 4.0

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Похоже, вы уже на правильном пути, и единственная реальная проблема - это загрузка изображений. Есть ли какая-то особая причина, по которой вы не можете кэшировать их, записывая их в каталог документов (или в каталог кэша, если вы хотите, чтобы они работали, когда приложение закрывается), когда вы получаете их и сначала смотрите их перед отображением?

1 голос
/ 14 декабря 2010

Поскольку вы используете iOS 4.0, я бы предложил использовать класс, который соответствует протоколу MKOverlay вместо MKAnnotationView.Наложение масштабирования с картой и масштабирование соответственно.Вероятно, вы можете использовать 1 оверлей для обработки всех ваших аннотаций.Посмотрите демонстрацию Apple HazardMap, представленную в 2010 году на WWDC: http://developer.apple.com

В качестве альтернативы вы можете использовать что-то вроде алгоритма k ближайших соседей для группировки аннотаций по шкале масштаба.Однако это может быть немного медленным, если у вас много аннотаций.Я попробовал это однажды с несколькими тысячами аннотаций, и мне не понравился достигнутый результат.Я думаю, что <1000 аннотаций могут иметь приличную производительность с этим методом. </p>

...