Какое событие вызывается при изменении экстента MKMAPVIEW - PullRequest
3 голосов
/ 21 июня 2011

Какое событие вызывается, когда MKMAPVIEW изменяет экстент (увеличивает или уменьшает, панорамирование)?

Мне нужно получить координаты, которые используются для отображения карты.

1 Ответ

6 голосов
/ 21 июня 2011

Вы должны принять протокол MKMapViewDelegate и реализовать метод mapView:regionDidChangeAnimated:, который будет вызываться в случае изменения региона. Однако, так как он будет вызываться много раз при прокрутке, вы должны принять это во внимание перед реализацией этого метода.

Получение верхней-левой координаты карты

CLLocationCoordinate2D topLeftCoordinate = [self.mapView convertPoint:CGPointMake(0,0)
                                                 toCoordinateFromView:self.mapView];

Или

Поскольку вы уже знаете регион,

MKCoordinateRegion region = self.mapView.region;
MKCoordinateSpan span = region.span;
CLLocationCoordinate2D center = region.center;

CLLocationCoordinate2D topLeftCoordinate = CLLocationCoordinate2DMake(center.latitude - span.latitudeDelta / 2, center.longitude - span.longitudeDelta / 2);
/* Similarly, get the others  */
...