【问题标题】:MKMapView - to keep user at center and cover route drawn on mapview on the screenMKMapView - 将用户保持在中心并覆盖在屏幕上的 mapview 上绘制的路线
【发布时间】:2015-09-26 11:25:51
【问题描述】:

我正在尝试实现如下:

  1. 用户应始终位于 MKMapView 屏幕的中心。
  2. 路线在用户移动时绘制在地图上。
  3. 我知道,我可以计算出覆盖屏幕上所有跟踪点的区域。

但这是我的问题: 当我计算 MKCoordinateRegion 并设置它时,它只适合最适合屏幕的区域,但是一旦我试图将用户放在中心,MKMapView 上绘制的线的一部分就会离开屏幕。

任何人都可以面对这个问题或任何建议来处理这个特定案例,任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 所以基本上你希望用户位置在中心并同时看到整个路线?
  • 是的,你是对的。 @Templar
  • 我有一个想法,我不确定它是否可行,遗憾的是现在没有时间添加详细的答案。基本上,您应该在 MKMapRect 坐标中获得折线或叠加层的boundingMapRect。由于用户位置将是中心,因此您应该通过将第一个反射到用户位置(点对称)来创建另一个 MKMapRect。然后获取最小值和最大值并创建更大的边界MKMapRect 并以此为中心。
  • @Templar 非常感谢。
  • 我已经发布了我的答案,我让它工作的方式非常精确和有效。如果对任何人有帮助,请投票给我。

标签: ios objective-c cocoa mkmapview mkcoordinateregion


【解决方案1】:

我是这样完成的:

  1. 计算距用户当前位置(或您希望保持在中心的任何点)最远点的距离。

  2. 使用您的中心点(在我的情况下为用户当前位置)计算区域,并将上面计算的距离加倍并使用以下代码创建区域:

    CLLocationCoordinate2D loc = [myLocation 坐标];

    MKCoordinateRegion 区域 = MKCoordinateRegionMakeWithDistance(loc, distance * 2, distance * 2);

  3. 在 MapView 上设置区域,轨迹将显示在屏幕内,使用户的位置保持在中心。

谢谢。

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多