iOS MKMapView - 如果用户已平移/拖动地图视图,则停止将地图视图重新定位到用户的位置

时间:2014-02-06 09:24:44

标签: ios objective-c mkmapview core-location

我设置了MKMapView

[self.mapView setShowsUserLocation:YES];

我想显示用户的位置,并在他/她移动时更新位置。当didUpdateUserLocation被调用时,即使用户已将应用程序平移到另一个区域,地图也会重新定位到用户的位置。我想要的是能够跟踪用户的位置,但也让用户探索地图。我的didUpdateUserLocation目前看起来像这样:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {

    _currentLocation = userLocation;

    [self.mapView setRegion:MKCoordinateRegionMake(CLLocationCoordinate2DMake(self.currentLocation.coordinate.latitude + 0.0015, self.currentLocation.coordinate.longitude), MKCoordinateSpanMake(0.01, 0.01)) animated:NO];

    [...]
}

关于我应该做些什么来实现我想要的东西?

2 个答案:

答案 0 :(得分:1)

只要将MKMapView的showsUserLocation属性设置为YES,用户位置就会自动更新(参见Apple Docs)。

您应该删除“setRegion”行,因为此行将视图置于用户位置的中心位置。

答案 1 :(得分:0)

我知道这篇文章早已不复存在,但我想在寻找这么多类似问题的答案时分享对我有用的内容。他们中的许多人根本没有工作。当我通过电子邮件发送Annotations的屏幕截图时,我想将我的位置移到一边,否则我必须缩小以便我的引脚下的区域仅占据可用区域的四分之一。

- (IBAction)beStill:(UIButton *)sender {
_mapView.showsUserLocation = NO;
}

- (IBAction)moveOn:(UIButton *)sender {
_mapView.showsUserLocation = YES;
}

虽然我还在整理它,但我在屏幕上放了两个按钮,但随后重构了UI,以便用户触摸的最后一个控件也可以安全地推断出他是想要打开还是关闭。然后我只是将语句放入相应的方法中,并删除了beStill和moveOn按钮。

这一点非常重要,因为当你启动应用程序时,你首先需要打开该功能,除非你在非洲西海岸的大西洋之外

这样我就无法使用setRegion

做任何事情