У меня есть приложение, которое отображает маршрут полета на MKMapView. После того, как маршрут загружен, есть небольшой расчет, который находит точки на северо-востоке и юго-западе. Затем, используя 2 точки, создается MKMapRect, чтобы увеличить прямоугольник, после вызова setVisibleMapRect. Однако это работает на небольших маршрутах, но не на маршрутах, которые обычно занимают более 90 градусов.MKMapView setVisibleMapRect не устанавливается (иногда)
NSLog(@"North East: %f, %f", northEastPoint.x, northEastPoint.y);
NSLog(@"South West: %f, %f", southWestPoint.x, southWestPoint.y);
MKMapRect swRect = MKMapRectMake(southWestPoint.x, southWestPoint.y, 0, 0);
MKMapRect neRect = MKMapRectMake(northEastPoint.x, northEastPoint.y, 0, 0);
MKMapRect zoomRect = MKMapRectUnion(neRect, swRect);
[_map setVisibleMapRect:zoomRect animated:NO];
Для маршрута из Финляндии в Гонконге точки являются:
// North East: 219158701.181065, 117406780.189312
// South West: 152831738.959918, 77478198.921545
Какие центрирует карту довольно красиво:
Однако подобный маршрут из Лондона в Гонконг Конг, пункты:
// North East: 219158701.181065, 117406780.189312
// South West: 133873691.426088, 77821652.051143
Который не центр ... остается на 0, 0
Любые идеи, почему ?? это некоторое время подтачивало меня. Я думаю, что это может иметь какое-то отношение к тому, что маршрут превышает 90 градусов долготы.
в IOS карте мира не является непрерывным, как и в случае Android. (В Android, если вы полностью уменьшить вы 2-3 карты бок о бок, и в этом случае ваш код правильно установит область отображения). в iOS, например, вы можете попытаться настроить центр карты на Австралию, полностью изменив масштаб, и вы увидите тот же регион, что и во втором случае. Чтобы установить центр карты на Австралию, MKMapview должен иметь другую карту на правой стороне. Так что ничего плохого в коде, это то, как ведет себя MKMapView. – chatur
@chatur, Итак, что я могу сделать, чтобы исправить мою проблему? – craig1231
Насколько я знаю, это невозможно исправить. – chatur