Может ли кто-нибудь подтвердить, что setRegion "привязывается" к предопределенным уровням масштабирования и независимо от того, является ли это поведение таким же спроектированным (хотя и недокументированным) или известной ошибкой? В частности, кажется, что setRegion привязывается к тем же уровням масштабирования, которые соответствуют уровням масштабирования, используемым, когда пользователь дважды отображает карту.
Я пытаюсь восстановить ранее сохраненную область, но это поведение делает невозможным сохранение сохраненной области с помощью масштабирования, а не масштабирование с двойным нажатием.
Большая подсказка для меня, что вещи сломаны на стороне карты, - это то, что происходит, если я назову regionThatFits на текущей текущей карте. Он должен возвращать тот же регион (поскольку он явно соответствует кадру карты), но он возвращает область, которая соответствует следующему более высокому предварительному уровню масштабирования.
setVisibleMapRect ведет себя аналогично.
Будет оценено любое дальнейшее понимание или информация.
Я нашел эти связанные сообщения, но не включил решение или окончательное подтверждение того, что это на самом деле ошибка mapkit:
MKMapView setRegion: нечетное поведение?
MKMapView показывает неправильно сохраненную область
EDIT:
Вот пример, демонстрирующий проблему. Все значения действительны для моего формата карты:
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
Обратите внимание на несоответствие значений дельты/долготы. Значения карты почти вдвое больше, чем я запрашивал. Большие значения соответствуют одному из уровней масштабирования, которые используются, когда пользователь дважды отображает карту.