Нам нужно получить текущий выбранный уровень масштабирования MKMapView, когда пользователь увеличивает или уменьшает масштаб на Картах Google с помощью Mapkit.
Решение, которое мы попробовали, работает нормально на симуляторе, но не на реальном устройстве (iPhone 3GS с iOS 3.0.1). Нам нужно запустить его на iOS 3+ (включая iOS 4).
Ниже приведен код, который мы используем для получения уровня масштабирования: -
При увеличении / уменьшении масштаба Mapkit вызывает этого делегата: -
(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
который, в свою очередь, вызывает нашу функцию Mapzoomlevel: -
#define MERCATOR_RADIUS 85445659.44705395
-(float) Mapzoomlevel {
return 21 - round(log2(_mapView.region.span.longitudeDelta *
MERCATOR_RADIUS * M_PI / (180.0 * _mapView.bounds.size.width)));
}
Этот код был взят из (см. Первый комментарий, опубликованный в этом блоге, в примере получения уровня масштабирования): -
http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/