Я предполагаю, что вы ищете:
- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect
Цитирование Документация Apple :
Этот метод предлагает быстрый способ полученияаннотации объектов в определенной части карты.Этот метод намного быстрее, чем сам линейный поиск объектов в свойстве аннотаций.
Позаботьтесь, что это только Доступно в iOS 4.2 и более поздних версиях , я боюсьв предыдущих версиях iOS нет другого решения, кроме пользовательского кода.
РЕДАКТИРОВАТЬ О вашем комментарии: Я предполагаю, что для нескольких тысяч комментариев вышеупомянутый метод должен сделайте свое дело, MKAnnotation
- это легкий протокол, сканирование массива путем фильтрации по координатам должно быть в порядке.Но будьте осторожны, не добавляя тысячи MKAnnotationView
, которые работают на iPhone 4, уже сделали это, но вы почти не можете прокрутить карту:)
Тогда я бы предложил:
- Используйте этот метод: быстро кодировать, легко, затем выполнить некоторые тесты производительности, на устройстве
- Если производительности недостаточно ... или вам нужно поддерживать предыдущие версии iOS,никакой магии, напишите свой собственный код.(не должно быть так сложно, есть служебные методы для преобразования регионов и тому подобное)
Что касается памяти, эй, эти устройства легко имеют как минимум 64 МБ свободной памяти для вашего приложения и убьют некоторые процессыесли нет, не пугайтесь нескольких K аннотаций!Просто позаботьтесь об утечках памяти, особенно при таких интенсивных процессах.