вы можете прослушать метод mapView:regionDidChangeAnimated:
. Однако, это не говорит вам, изменился ли уровень масштабирования, просто если карта была анимирована.
Вам также необходимо прослушать свойство region
представления карты. Он содержит значения latitudeDelta и longitudeDelta, которые можно использовать для вычисления изменения уровня масштабирования.
т.е. в .h файле
@class MyMapViewController {
...
MKCoordinateRegion mapRegion;
}
@end
и в вашем .m файле
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
mapRegion = mapView.region;
}
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
newRegion = mapView.region;
if (mapRegion.span.latitudeDelta != newRegion.span.latitudeDelta ||
mapRegion.span.longitudeDelta != newRegion.span.longitudeDelta)
NSLog(@"The zoom has changed");
}
Это должно определить, изменился ли масштаб карты.
однако вам следует избегать изменения масштаба, потому что Земля искривлена :( Если прокрутить карту, значения latitudeDelta и longitudeDelta будут немного меняться только из-за формы Земли, а не из-за увеличения масштаба пользователя. должны обнаруживать большие изменения в дельтах и игнорировать небольшие изменения.
Надеюсь, это поможет.