2014-07-30 2 views
0

Я очень новичок в программировании iOS и извиняюсь, что этот вопрос звучит довольно тривиально. Но после поиска в Интернете часами я сдался.Как получить уведомление о завершении анимации карты или анимации прокрутки?

Мне нужно получить текущий уровень масштабирования карты в приложении iOS, так что, когда я меняю текущий вид, я могу сохранить уровень масштабирования. Используя this code, я могу установить и установить уровни масштабирования. Я применил метод mapView:regionDidChangeAnimated: протокола MKMapViewDelegate. Но этот метод вызывается несколько раз во время первоначальной анимации «масштабирования» карты, и если в течение этого периода мне нужно обновить карту, я мог бы иметь неправильный уровень масштабирования. Я, конечно, не хочу отключать анимацию карты. Итак, я искал способ определить, будет ли карта в настоящее время анимирована или стационарной, перед чтением и сохранением уровня масштабирования.

Я пользуюсь MKMapView.

+0

Вы используете MKMapview или Google карту? –

+0

@kirtiavaiya 'MKMapView'. –

+0

Я думаю, вы можете использовать MKMapview, не могли бы вы сказать, почему вы использовали MapKit –

ответ

0

Вы можете попробовать с помощью кода ниже

#define MERCATOR_RADIUS 85445659.44705395 
#define MAX_GOOGLE_LEVELS 20 

@interface MKMapView (ZoomLevel) 
- (double)getZoomLevel; 
@end 

@implementation MKMapView (ZoomLevel) 

- (double)getZoomLevel 
{ 
CLLocationDegrees longitudeDelta = self.region.span.longitudeDelta; 
CGFloat mapWidthInPixels = self.bounds.size.width; 
double zoomScale = longitudeDelta * MERCATOR_RADIUS * M_PI/(180.0 * mapWidthInPixels); 
double zoomer = MAX_GOOGLE_LEVELS - log2(zoomScale); 
if (zoomer < 0) zoomer = 0; 
// zoomer = round(zoomer); 
return zoomer; 
} 

@end 
+0

Я действительно использую этот код, чтобы получить уровень масштабирования. Но где я должен называть 'getZoomLevel()'? Как я уже упоминал в моем вопросе, «mapView: regionDidChangeAnimated:' вызывается несколько раз во время первоначального увеличения карты. –

+0

это будет вызов, потому что вы пытаетесь изменить mapview, поэтому, если вид изменяется, этот метод также можно назвать –

+0

Let's скажем, я изменяю масштаб с 1 на 17. 'mapView: regionDidChangeAnimated:' много раз во время анимации. Как узнать, когда нужно называть 'getZoomLevel()'? –

Смежные вопросы