关于在iOS中旋转地图

时间:2011-01-31 19:38:28

标签: objective-c ios mapkit rotation

我在尝试在iPhone应用中旋转地图时遇到此问题

视图被剪裁并且也会发生旋转。我想避免剪辑。有什么提示吗?

继承人代码:

viewToRotate.layer.transform = CATransform3DMakeRotation(0.8, 0., 0., 1.);

2 个答案:

答案 0 :(得分:2)

您需要在3D中旋转地图吗?如果不是(这是我认为你需要的),那么只需使用CGAffineTransformMakeRotation(小心,因为它需要以弧度表示的角度)。

此外,如果您不希望剪裁地图,则需要将地图放大,如下图所示(在新标签中打开以查看更大)

http://img593.imageshack.us/img593/4498/calculatemapboundswhenr.png

首先,您需要按照上图中的指示计算矩形的对角线(您的可见地图)(我称之为“半径”,因为这将是比您的矩形更大的最小圆的半径)。

其次,使用半径,您需要计算(最小)方块,以便在不剪裁的情况下看到地图。此方块将用于设置地图的bounds(注意:不是frame - Apple指定在使用轮换时,您不应使用frame - 仅{{1} }和/或bounds)。

确保此正方形位于可见地图矩形的中心(即正方形应在小矩形的上方和下方X像素...以及小矩形的左右Y像素)。

希望它有所帮助!

答案 1 :(得分:0)

你有没有想出解决方案?

我能做到的唯一方法是让Interface Builder中的MapView比它应该覆盖的屏幕区域的实际大小大得多,然后我将MapView居中,使其中心位于较窄的可视区域的中心区域。

旋转似乎与它在内置地图应用中的工作方式类似。

我的猜测是你必须这样做,以便从谷歌流入的图像平铺覆盖足够宽的区域以“填补空白”,即使它们并不总是可见的。

如果你应用一些小数学,你可能可以通过编程方式调整MapView的大小和位置,使你无法裁剪,但不需要更多的瓷砖,而不是绝对必要的。