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

当用户按下button时,我使用下面的代码来获取我的位置

[mapview setShowsUserLocation:YES]; 

然后再把这个地图放到用户的位置

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

我的问题是如何防止地图始终集中在我的位置? 我想让用户平移地图。

我认为它与iOS5来了,你现在可以删除委托的东西,只是设置MKMapView的userTrackingMode。 将其设置为MKUserTrackingModeFollow,以便使用户随着用户移动,然后当他们开始平移地图时,它会自动closures跟踪模式,然后您只需提供一个button即可将其重新打开。

只有在您第一次显示地图时才在中心位置。 这是一些伪代码…

  - (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在你处理button按相同的方法的状态。

在swift 3我更喜欢使用animation方法:

 mapView.setUserTrackingMode(.follow, animated: true) 

但集财产良好的工作:

 mapView.userTrackingMode = .follow