Нам нужно получить текущий выбранный уровень масштабирования MKMapView, когда пользователь увеличивает или уменьшает масштаб в Google Maps с помощью 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/