0

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

1 回答 1

1

这是因为您有位图图块。今天的 MapKit 适应了位图块的全尺寸,因此在水平方向上显示更宽的区域。如果 MapKit 确实使用了基于矢量的图块,它可能会在未来的版本中使用,正如昨天在主题演讲中所展示的,它不会受到位图图块问题的限制。

MapKit 今天没有解决方法。我没有看 bing Maps 或 Routeme。你应该。

于 2012-06-12T18:12:24.347 回答