地图视图总是在我的位置中心地图

时间:2012-03-09 16:41:35

标签: ios mkmapview

当用户按下按钮时,我使用以下代码获取我的位置

 [mapview setShowsUserLocation:YES];

然后将地图居中到te用户的位置

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation      
{
   [mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES];
} 

我的问题是如何防止地图始终以我的位置为中心?我想允许用户平移地图。

3 个答案:

答案 0 :(得分:6)

仅在您第一次显示地图时居中。这是一些伪代码......

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

       if(shouldCenterLocation){
           [mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES];
           shouldCenterLocation = FALSE;

        }
        //do all your other stuff here
    }

shouldCenterLocation是一个布尔标志,您可以在第一次显示地图时将其设置为TRUE,然后将其设置为FALSE,直到您退出视图(或显示中心位置的任何其他条件)。

编辑:您可以按照按下按钮的相同方法切换shouldCenterLocation的状态。

答案 1 :(得分:5)

我认为它来自iOS5,您现在可以删除委托内容并只设置MKMapView的userTrackingMode。将它设置为MKUserTrackingModeFollow以使make与用户一起移动,然后当它们开始平移地图时,它将自动关闭跟踪模式,然后您需要提供一个按钮将其重新打开。

答案 2 :(得分:1)

在swift 3上我更喜欢使用动画方法:

mapView.setUserTrackingMode(.follow, animated: true)

但设置了良好的财产:

mapView.userTrackingMode = .follow