MKCoordinateregion центр меняется при изменении диапазона - iphone
У меня есть 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 ответа
Ваши координаты до и после центра практически одинаковы, поэтому проблем не должно быть. Если вы действительно хотите точно такие же координаты центра, позвоните setCenterCoordinate:animated:
сразу после использования setRegion:animated:
и передать некоторые сохраненные координаты центра.
CLLocationCoordinate2D originalCenter = mymap.centerCoordinate;
// ... adjust region
[mymap setCenterCoordinate:originalCenter animated:NO];
Кроме того, вы должны использовать YES
вместо TRUE
для логических значений:
[mymap setRegion:region animated:YES];
Вам необходимо настроить регион карты, чтобы соотношение сторон соответствовало размеру кадра вида карты.
Как только регион с желаемым центром рассчитан, отрегулируйте регион как,
MKCoordinateRegion adjustedRegion = [mymap regionThatFits:region];
[mymap setRegion:adjustedRegion animated:TRUE];
Смотрите документы.