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

最佳答案

这是因为您有位图图块。现在,MapKit可以适应位图图块的完整大小,因此可以在水平方向上显示更大的区域。如果MapKit确实使用了基于矢量的图块,并且它会在将来的版本中使用(如昨天在主题演讲中所演示的那样),那么它就不会受到位图图块问题的限制。

今天,MapKit没有解决方法。我没看过必应地图或Routeme。你应该。

08-26 03:19