MKMapView::mapRectThatFits を使用すると、奇妙な不正確さが生じます。高さよりも幅の広い MKMapRect を渡すと、mapRectThatFits が同じ水平スパンを持つ新しい MapRect を返すことが期待されますが、垂直スパンが増加して mapView に収まりますが、MKMapView が水平スパンに追加されていることに気付きます縦も同様。
この不正確さは、座標領域の次元が大きくなるにつれて大きくなるようです。数百メートルでは精度は無視できますが、1.5 キロメートルではその差は 0.0006 と大きくなります。
mapRectThatFits:edgePadding をエッジ パディングをゼロに設定して regionThatFits で使用しようとしましたが、どちらも同じ不正確さをもたらします。
MKCoordinateRegion combinedRegion = self.models.locationModelsCoordinator.coordinateRegion;
NSLog(@"Before %f", combinedRegion.center.longitude - (combinedRegion.span.longitudeDelta * 0.5)); // Logs -0.103473
MKMapRect combinedRect = [ELMapKitUtils mapRectForCoordinateRegion:combinedRegion];
// If I convert combinedRect back to an MKCoordinateRegion here I can verify it is unaltered, so there is no issue with my conversion code.
MKMapRect focusRect = [self.mapView mapRectThatFits:combinedRect];
MKCoordinateRegion regionFittedToMapView = MKCoordinateRegionForMapRect(focusRect);
NSLog(@"After %f", regionFittedToMapView.center.longitude - (regionFittedToMapView.span.longitudeDelta * 0.5)); // Logs -0.104107