Может ли кто-нибудь подтвердить, что setRegion «привязывается» к предопределенным уровням масштабирования и является ли это поведение таким, как задумано (хотя и недокументировано), или известной ошибкой?В частности, кажется, что setRegion привязывается к тем же уровням масштабирования, которые соответствуют уровням масштабирования, используемым, когда пользователь дважды нажимает на карту.
Я пытаюсь восстановить ранее сохраненный регион, но это поведение делает невозможнымесли сохраненный регион был установлен с помощью масштабирования с помощью пинча, а не с двойным нажатием.
Большой подсказкой для меня является то, что что-то сломано на стороне mapkit, это то, что происходит, если я вызываю regionThatFits на картытекущий регион.Он должен возвращать ту же область (поскольку она, очевидно, соответствует кадру карты), но вместо этого возвращает область, которая соответствует следующему более высокому предварительно определенному уровню масштабирования.
setVisibleMapRect ведет себя аналогично.
Любое дальнейшее пониманиеили информация будет оценена.
Я нашел эти связанные посты, но ни одно из них не содержало решения или окончательного подтверждения, что это на самом деле ошибка mapkit:
MKMapView setRegion: странное поведение?
MKMapView показывает неправильно сохраненную область
РЕДАКТИРОВАТЬ:
Вот пример, который демонстрирует проблему.Все значения действительны для соотношения сторон моего вида карты:
MKCoordinateRegion initialRegion;
initialRegion.center.latitude = 47.700200f;
initialRegion.center.longitude = -122.367109f;
initialRegion.span.latitudeDelta = 0.065189f;
initialRegion.span.longitudeDelta = 0.067318f;
[map setRegion:initialRegion animated:NO];
NSLog(@"DEBUG initialRegion: %f %f %f %f", initialRegion.center.latitude, initialRegion.center.longitude, initialRegion.span.latitudeDelta, initialRegion.span.longitudeDelta);
NSLog(@"DEBUG map.region: %f %f %f %f", map.region.center.latitude, map.region.center.longitude, map.region.span.latitudeDelta, map.region.span.longitudeDelta);
ВЫХОД:
DEBUG initialRegion: 47.700199 -122.367111 0.065189 0.067318
DEBUG map.region: 47.700289 -122.367096 0.106287 0.109863
Обратите внимание на расхождение в значениях широты / долготы.Значения карты почти вдвое больше, чем я запрашивал.Большие значения соответствуют одному из уровней масштабирования, используемых, когда пользователь дважды касается карты.