我使用以下代码放大我的用户在MapView上的当前位置。它工作得很好,但是我仍然希望允许我的用户能够在设置区域之外滚动(例如,以便他们可以在地图上看到其他用户)。现在,如果我的用户滚动到设置区域之外,MapView会将用户恢复到设置区域内部。如何执行以下代码(放大用户的位置),同时仍允许它们在设定区域之外滚动?
MapViewController.m
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 1300, 1300);
[self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
}
答案 0 :(得分:1)
我写了一个简短的应用程序,它将显示用户位置并跟踪用户位置。该应用程序将专注于用户位置,并且只要您不滚动地图视图,就会保持用户位置居中。
一旦开始滚动,地图视图就会远离用户位置并保持这种状态,因为地图视图不会自动向后移动。为了使您能够返回到用户位置,我添加了一个名为“焦点”的按钮,该按钮将地图视图居中回到用户位置,并使地图再次关注用户位置,直到您再次开始滚动为止。
该应用实际上非常简单,它使用MKMapView中的两个属性:
var showUserLocation: Bool {get set}
var userTrackingMode: MKUserTrackingMode {get set}
当然,您可以通过设置区域来进一步缩放到用户位置,但这可以通过setRegion(_:animated :)轻松完成。
您可以在Github上找到代码here并下载它以了解它是如何工作的。您可以使用模拟器轻松测试。
如果有帮助,请告诉我。