【发布时间】:2014-04-17 08:05:22
【问题描述】:
我必须在 MKMapView 上显示 MKMapRoute,并且它必须显示在我地图上的特定区域,而不是在中心,而是在顶部区域。 它必须放置在大约 80 点高度的“框架”中。
我以为我可以通过使用 MKMapView 的方法来实现这一点
- (MKMapRect)mapRectThatFits:(MKMapRect)mapRect edgePadding:(UIEdgeInsets)insets
但我遇到了一些奇怪的事情。 准确地说,如果我使用这段 sn-p 代码:
//obj is the returned mkroute object.
MKRoute *rout = obj;
MKPolyline *line = [rout polyline];
MKMapRect boundingMapRect = [line boundingMapRect];
MKMapRect fittedRect = [self.mapView mapRectThatFits:[line boundingMapRect]
edgePadding:UIEdgeInsetsMake( 100, 0, 0, 0)];
MKCoordinateRegion r = MKCoordinateRegionForMapRect(fittedRect);
[self.mapView setRegion: r animated:YES];
结果在以下屏幕截图中可见:
但是,如果我将之前的 sn-p 的第四行更改为:
MKMapRect fittedRect = [self.mapView mapRectThatFits:[line boundingMapRect]
edgePadding:UIEdgeInsetsMake( 100, 0, 0, 0)];
结果是这个:
您可以清楚地看到,偏移量从顶部改变了 50(而不是 100)点。 当我使用 MKMapRegion 的跨度纬度和经度增量或更改设备屏幕时,事情似乎变得更加奇怪。
现在,我的目标只是告诉 mapView 在“距顶部 64 点,高度为 80 点,宽度为 320 点”的框架中绘制该路线,我'没有找到一种简单的方法来做到这一点,我担心我错过了一些东西。我不想通过改变区域的纬度来玩,因为内容大小可能会有所不同(显示的路线可能更小或更大)。我错过了什么,有什么简单的方法可以做到这一点?为什么插图没有正确计算?
【问题讨论】:
标签: ios objective-c mkmapview mapkit mkmaprect