Как установить уровень масштабирования 15 в MapKit с помощью iPhone sdk

Я реализую приложение на основе MapKit. В этом случае мне нужно установить уровень масштабирования 15. Исходя из этого, мне нужно изменить регион. Я пробовал использовать следующий код, но он не работает должным образом. Когда я использовал возвращенный регион и установил Mapview, он получил исключение вроде «NSInvalidArgumentException», причина: «Недопустимый регион». Можете ли вы, ребята, предложить идеальный способ решения этой проблемы?

-(MKCoordinateRegion)getRegoinBasedOntheZoomLevel:(int)zoom

{

MKCoordinateRegion region;
MKCoordinateSpan span;  

if (coords1.latitude != 0 && coords1.longitude !=0) 
{
    region.center = coords1;
}
else 
{
    region.center=mainMapView.region.center;
}
span.latitudeDelta=mainMapView.region.span.latitudeDelta *2*zoom;
span.longitudeDelta=mainMapView.region.span.longitudeDelta *2*zoom;
region.span=span;
return region;

}

Заранее спасибо. Сехар Беталам.


person sekhar    schedule 21.09.2010    source источник


Ответы (1)


Сехар, я не совсем уверен, чего пытается достичь ваш код - он умножает (неуказанный) диапазон на 2 * масштаб: я почти уверен, что он не будет делать то, что вы говорите. «Масштаб» обычно определяется как число n от 0 до N, где 2 ^ n - количество фрагментов карты вокруг Земли.

Вместо того, чтобы пытаться объяснить теорию, см. этот пост, который я обнаружил (путем поиска на этом форуме), что предоставляет отличный обзор, включая гиперссылки на отличное описание теории и практики проекций Меркатора, фрагментов карты и даже актуальный код MKMapView, который вам нужен.

person Echelon    schedule 21.09.2010
comment
@ Echelon: Спасибо за повтор, я займусь этим. - person sekhar; 22.09.2010