Я написал приложение для iPhone для клиента, и мы включили локатор магазина для одного из брендов этого магазина. Он включает в себя 501 местоположение, и хотя анимация может быть немного прерывистой, когда вы уменьшаете масштаб для просмотра всей территории Соединенных Штатов, она прекрасно масштабируется до уровня штата, где видна лишь небольшая часть выводов.
Ключи:
- Перед добавлением аннотаций масштабируйте пользователя в его текущем местоположении.
- Повторное использование аннотаций с использованием
dequeueReusableAnnotationViewWithIdentifier:
.
Чтобы достичь первого пункта, вам нужно включить обновления местоположения и установить флаг, когда вы получите первый. Анимируйте карту к этому местоположению, используя диапазон областей, который имеет смысл для вашего приложения, затем в mapView:regionDidChangeAnimated:
проверьте, нужно ли добавлять аннотации и , что текущее местоположение было обновлено перед вами. Звоните addAnnotation:
.
Если вы не можете или не хотите увеличивать местоположение пользователя, можете ли вы отфильтровать аннотации, показанные на самом высоком уровне, и добавлять дополнительные аннотации только по мере увеличения масштаба пользователя?
Кстати, я полагаю, у вас есть утечка памяти в вашем коде, как указано выше. Даже если вы не хотите использовать механизм удаления из очереди, представление, которое вы возвращаете из mapView:viewForAnnotation:
, должно быть автоматически освобождено.