根据指南针旋转MapView

时间:2011-06-07 08:23:19

标签: cocoa-touch ios4 mkmapview

我正在开发需要像iOS上的原始MapView一样工作的Map应用程序。 我需要根据罗盘标题值旋转mapview。我试过了MTLocation例子我也试过this answer但我的结果并不好。

请看屏幕截图。

enter image description here

当我根据标题值旋转mapview时,Map正在旋转,但正如您在屏幕上看到的那样,缺少了。

如何解决此显示问题?

此致 - 法提赫

3 个答案:

答案 0 :(得分:9)

Hy,

我是MTLocation的作者。谢谢你顺便使用它! 为此,您必须确保您的MKMapView是ViewController视图的子视图(而不是视图本身)。然后你必须用一个简单的Pytaghoras来增加mapView的框架 - 计算:宽度和高度必须至少与对角线一样大:sqrt(visibleWidth [320] ^ 2 + visibleHeight [480-88] ^ 2)= 506。

这意味着

 mapView = [[MKMapView alloc] initWithFrame:CGRectMake(-100,-100,520,520)];

希望有所帮助,如果它解决了你的问题,请考虑提升。

答案 1 :(得分:0)

  1. 您可以考虑为MKMapView对象使用更大的框架。它可能应该是一个正方形,每边都等于设备对角线的长度。这种方法的问题在于,该对象的某些区域是用户不会看到的,但我们仍然处理与该区域相关的注释的视图等信息。其他属性如visibleMapRect则没有帮助。

  2. 另一种选择是通过在旋转时缩放MKMapView对象来放大。但这可能会使地图模糊(未经测试)。您可以缩小地图中显示的区域,但可能会导致频繁刷新。您可以查看中间地面,在地图旋转一定角度之前不要缩小。您还可以查看使用两个视图,其中一个视图在屏幕外并更新,以便它可以在一定量的旋转后替换视图,以使其感觉无缝。

答案 2 :(得分:0)

我正在努力在iPhone中制作自己的地图应用程序。我希望我的地图随着用户的转动而旋转。我尝试在iOS 5中使用setUserTrackingMode,但由于某种原因它不起作用。所以我决定接受MTLocation框架here的帮助。

直到现在我已经做了以下事情。

  1. 创建了一个新项目并复制了所有.m和.h文件。
  2. 导入MapKit.hMTLocation.h
  3. Viewcontroller.h中,为mapView定义了属性(我应该为locateMeItem定义一个属性)。
  4. ViewDidLoad中,粘贴页面末尾给出的代码here
  5. 我收到了一些错误:

    1. 以编程方式创建时无法看到locateMe按钮。
    2. 未定义的属性headingEnabled
    3. myCustomSelector无效。
    4. self.toolbar - 工具栏不是ViewController的实例。
    5. 我也在gist [dot] github [dot] com / 1373050上尝试过代码,但是我也遇到了类似的错误。

      任何人都可以解释一个详细的程序。