Как проверить, доступна ли MKAnnotation в MKCoordinateRegion? - PullRequest
8 голосов
/ 30 декабря 2011

Я заметил, что если я использую MKMapView selectAnnotation:animated:, он будет прокручивать мою карту вне экрана, если MKAnnotation не отображается в текущем MKCoordinateRegion, который отображает моя карта.

Есть ли тривиальный способ проверить, отображается ли аннотация на экране в указанном MKCoordinateRegion? Я хотел бы иметь возможность выбрать аннотацию, которая только на экране, а не что-то за кадром.

1 Ответ

27 голосов
/ 30 декабря 2011

Используйте метод annotationsInMapRect: в классе MKMapView. Он возвращает NSSet всех объектов аннотации, которые видны в данном прямоугольнике карты. Используйте containsObject: метод NSSet, чтобы проверить, присутствует ли аннотация в этом наборе видимых аннотаций.

MKMapRect visibleMapRect = aMapView.visibleMapRect;
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect];
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation];

Также visibleMapRect - это то же самое, что и регион, но просто другая форма представления. Возьмите из документов,

visibleMapRect

Область, отображаемая в данный момент на карте.

@property(nonatomic) MKMapRect visibleMapRect

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

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