如何检测哪个方向的地图视图改变了区域

时间:2016-10-28 05:13:30

标签: ios iphone mkmapviewdelegate

我正在处理与投放相关的应用。在这个应用程序中,一个视图显示地图视图。如果地图视图改变其区域,那么如何从当前位置查找地图视图区域的方向?

1 个答案:

答案 0 :(得分:0)

您可以创建一个属性来存储最后一个中心坐标,然后使用此答案https://stackoverflow.com/a/6140171/1757960

中的方法找到新坐标和最后一个坐标之间的方向

这样的事情:

创建属性

@property (assign, nonatomic) CLLocationCoordinate2D lastCenterCoordinate;

实施委托

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    float angle = [self angleFromCoordinate:self.lastCenterCoordinate toCoordinate:mapView.centerCoordinate];

    self.lastCenterCoordinate = mapView.centerCoordinate;
}

作为参考,这是上面链接的答案中的方法

+ (float)angleFromCoordinate:(CLLocationCoordinate2D)first 
                toCoordinate:(CLLocationCoordinate2D)second 
{

    float deltaLongitude = second.longitude - first.longitude;
    float deltaLatitude = second.latitude - first.latitude;
    float angle = (M_PI * .5f) - atan(deltaLatitude / deltaLongitude);

    if (deltaLongitude > 0)      return angle;
    else if (deltaLongitude < 0) return angle + M_PI;
    else if (deltaLatitude < 0)  return M_PI;

    return 0.0f;
}

(注意这未经测试)