使用MKMapView旋转的经验

8
我有一个MKMapView,我正在考虑旋转它以更方便地向用户显示一系列的标注。
目前,我计划简单地使用CGAffineTransform来旋转整个视图,但我想知道是否有人有MKMapView旋转的经验。
以下是需要注意的问题:
  • 添加旋转时是否有任何陷阱或注意事项?
  • 有没有更简单的方法来旋转Mapview?
  • 如果我有一个覆盖层,convertCoordinate:toPointToView:方法仍然能够正常工作吗?我认为我需要对我的覆盖层应用相同的变换才能使点对齐,但也许这个方法比较聪明。
如果你有任何建议,我都很愿意听取。
编辑:经过大量实验,我相信我将使用静态地图,并自己旋转和叠加,但我仍然对MKMapView旋转的任何信息感兴趣。
4个回答

8

我计划在我的应用程序中使用旋转的MKMapView。为了显示未旋转的注释,我使用以下代码:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    ...
    annotationView.transform = GAffineTransformInvert(mapView.transform);
    ...
}

对我来说似乎可行。


谢谢提供信息,我理解注释视图变换只影响旋转?那么位置是其他变换的函数吗? - jessecurry

6
抱歉,重新唤起一个已完成的话题,但是还有一个问题:如果您将地图视图的大小调整为足够大,以便旋转时始终覆盖整个屏幕,则会从左下角剪裁“Google”标志。这明确违反了您使用MapKit的许可证,并可能成为应用拒绝的理由。在实践中,所有各方似乎都认为在顶部添加Google标志的静态版本作为UIImageView是可以接受的。

1
好的观点。实际上,您可以从MKMapView中检索“Google”标志。 MKMapView有2个子视图,一个是包含标志的UIImageView。我创建了自己的UIImageView,并将其图像属性设置为与MKMapView中的相同,它可以正常工作。 Google标志显示为未旋转状态。 - Fraggle

5

1

我开始研究MKMapView的旋转功能,发现以下几点:

  • 当你对地图视图应用CGAffineTransform时,方法convertCoordinate:toPointToView:仍然有效。
  • 注释随着视图旋转而旋转,包括注释文本。
  • 拟合区域仍然显示在屏幕上的区域内,而不是适合地图视图(我将我的地图视图放大到它的父视图之上,这样就可以旋转而不会显示背后的视图)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接