iOS谷歌地图停止滚动超出半径

如何停止滚动超出半径。 我需要限制用户只在20米的当前位置滚动。

我已经尝试下面的链接:

防止在Google地图上滚动外部地图区域

但是我无法find正确的代码来实现这个职位的当前答案。

你可以使用distanceFromLocation来计算离你的中心坐标点有多远,那么你可以检查你是否在(void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position委托方法的圆圈外滚动。

示例代码:

  - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:11]; mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.myLocationEnabled = YES; mapView.settings.myLocationButton = YES; self.view = mapView; // Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = mapView; CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(-33.86, 151.20); GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter radius:10000]; circ.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05]; circ.strokeColor = [UIColor redColor]; circ.strokeWidth = 5; circ.map = mapView; mapView.delegate = self; } - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { CLLocationCoordinate2D center = CLLocationCoordinate2DMake(-33.86, 151.20); int radius = 10000; CLLocation *targetLoc = [[CLLocation alloc] initWithLatitude:position.target.latitude longitude:position.target.longitude]; CLLocation *centerLoc = [[CLLocation alloc] initWithLatitude:center.latitude longitude:center.longitude]; if ([targetLoc distanceFromLocation:centerLoc] > radius) { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:center.latitude longitude:center.longitude zoom:mapView.camera.zoom]; [mapView animateToCameraPosition: camera]; } }