#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 и сравнить интервал до и после.