вызов метода с параметрами

#ios #mapkit

#iOS #mapkit

Вопрос:

я использую фреймворк MapKit и хочу спросить вас кое о чем :

   (NSUInteger)zoomLevelForMapRect:(MKMapRect)mRect withMapViewSizeInPixels:(CGSize)viewSizeInPixels
{
    NSUInteger zoomLevel = MAXIMUM_ZOOM; // MAXIMUM_ZOOM is 20 with MapKit
    MKZoomScale zoomScale = mRect.size.width / viewSizeInPixels.width; //MKZoomScale is just a CGFloat typedef
    double zoomExponent = log2(zoomScale);
    zoomLevel = (NSUInteger)(MAXIMUM_ZOOM - ceil(zoomExponent));
    return zoomLevel;
}
  

этот метод .. как я могу узнать значение mRect и viewSizeInPixels параметров, чтобы иметь возможность его вызвать?? заранее спасибо 🙂

Ответ №1:

Текущий MKMapRect для вида карты является свойством visibleMapRect, а размер вида будет в frame.size (поскольку MKMapView является подклассом UIView), поэтому метод будет вызываться с использованием чего-то вроде:

 NSUInteger zoomLevel = [UtilityClass 
                           zoomLevelForMapRect:mapView.visibleMapRect 
                           withMapViewSizeInPixels:mapView.frame.size];
  

UtilityClass действительно ли назван класс, в котором находится этот метод, и замените mapView на то, что вы видите на карте.

Кстати, стоит взглянуть на справочник по MapKit Framework и Руководство по программированию с учетом местоположения.

Комментарии:

1. Спасибо за вашу помощь, кстати, с каким значением я могу сравнить переменную zoomLevel, чтобы убедиться, что пользователь действительно уменьшил масштаб карты ?? спасибо

2. Вы могли бы использовать методы делегирования regionWillChangeAnimated и regionDidChangeAnimated и сравнить интервал до и после.