使用 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