MKCoordinateregion центр меняется при изменении диапазона - iphone - PullRequest
1 голос
/ 01 октября 2011

У меня есть MKCoordinateregion, называемый регион.Я хочу изменить диапазон этого региона, не меняя его центр.Я использую следующий метод для изменения масштаба.

 -(void) changeZoom
    {

     NSLog(@"before zoom span, center are   %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude);
                region.span.latitudeDelta = current_factor ;
                region.span.longitudeDelta = current_factor ;
                region.center.latitude = mymap.centerCoordinate.latitude ;
                region.center.longitude = mymap.centerCoordinate.longitude ;
                [mymap setRegion:region animated:TRUE];

                NSLog(@"after zoom span, center are   %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude);
    }

Журнал показывает:

before zoom span, center are   0.021950, 0.021950,19.068080,72.838111
 after zoom span, center are   0.043901, 0.043901,19.068040,72.838154

Этот набор параметров метода точно соответствует желаемому. Но я не хочу никаких изменений в координате центра, потому чтокогда я уменьшаю, а затем уменьшаю, я оказываюсь в месте, отличном от исходного положения.

Существует ли какой-либо метод, позволяющий увеличивать и уменьшать масштаб изображения без каких-либо изменений в центре?

Спасибо за любую помощь заранее.

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Ваши координаты до и после центра почти одинаковы, поэтому это не должно быть проблемой.Если вам действительно нужны точные одинаковые координаты центра, позвоните setCenterCoordinate:animated: сразу после использования setRegion:animated: и передайте некоторые сохраненные координаты центра.

CLLocationCoordinate2D originalCenter = mymap.centerCoordinate;
// ... adjust region
[mymap setCenterCoordinate:originalCenter animated:NO];

Кроме того, вам следует использовать YES вместо TRUE для логических значений:

[mymap setRegion:region animated:YES];
0 голосов
/ 01 октября 2011

Необходимо отрегулировать регион карты, чтобы убедиться, что форматное соотношение соответствует размеру кадра вида карты.

Как только регион с нужным центром рассчитан, отрегулируйте регион как,

MKCoordinateRegion adjustedRegion = [mymap regionThatFits:region];
[mymap setRegion:adjustedRegion animated:TRUE];

См. документы .

...