【问题标题】:Detect if a location is visible on rotating MkMapView检测旋转的 MkMapView 上是否可见位置
【发布时间】:2013-03-27 17:52:05
【问题描述】:

我正在使用具有 mkusertrackingmodefollowwithheading 跟踪模式的 MkMapView,以便地图根据指南针方向旋转。

我需要知道某个特定位置在地图视图上是否可见。

考虑到地图视图是旋转的,这似乎相当困难,但也是许多不同应用程序的共同需求。

有什么办法吗?

谢谢! -c

【问题讨论】:

  • 你能举个例子吗?我认为大多数情况都可以通过在地图上添加注释并让地图视图在屏幕上绘制它来涵盖。
  • 示例:您想查看您有差事的商店的位置。如果您在向东仅 0.5 公里处有一个任务/商店面朝北,您可能看不到它,即使您可以看到另一个更远但此时恰好适合屏幕的朋友。
  • 在您决定要访问哪些商店后,您希望在四处走动时在地图上看到所有这些。如果缩放设置为保证无论指南针方向如何,所有任务始终可见,则必须将地图缩小得很远(太远)。地图根据指南针方向放大或缩小,只知道所有任务是否合适,不是更好吗?
  • 如果您只是想缩小足够远以确保最近的引脚即使在侧面也可见,请获取到最近引脚的距离并将其设置为半经度跨度。跨度>
  • 我可能是错的,但我认为这样的规则不会带来好的体验。我认为在决定缩小多远时应考虑指南针方向。否则一半的地图区域被浪费了。这里有一个例子:link

标签: mkmapview mapkit mkannotation mkannotationview


【解决方案1】:

经过几个小时的研究,我似乎找到了解决方案....

// testing if someLocation is on rotating mapView
CGRect myRect = [self.mapView frame];
CGPoint screenP = [self.mapView convertCoordinate:someLocation toPointView:self.mapView];
if(screenP.x > 0) {
  if(screenP.y > 0) {
    if(screenP.x < myRect.size.width) {
      if(screenP.y < myRect.size.height) {
        return YES;
      }
    }
  }
}
return NO;

无论如何,...这似乎工作得很好。 -c

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多