マップでユーザーの位置をロックするために使用するこれら 2 つの方法があり、完全に機能します...
ただし、うまく機能しすぎていると思います笑、ユーザーがマップを移動してマップ上の別の場所を見るたびに...現在の場所があった場所にユーザーを強制的に戻します。
私の質問は、ユーザーがマップをスクロールした後、ユーザーの場所へのロックを無効にするにはどうすればよいかということだと思います。
- (void)viewDidLoad {
// more code here that i didn't post
[self.mapView.userLocation addObserver:self
forKeyPath:@"location"
options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)
context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([self.mapView showsUserLocation]) {
MKCoordinateRegion region;
region.center = self.mapView.userLocation.coordinate;
MKCoordinateSpan span;
span.latitudeDelta = 1; // Change these values to change the zoom
span.longitudeDelta = 1;
region.span = span;
[self.mapView setRegion:region animated:YES];
}
}