Google Maps SDK iOS – 防止地图在缩放时更改位置

我有一个问题,我无法解决一段时间。

我有一个GMSMapView,它前面的imageView在它的中心。 结果 – 我可以拖动地图,并始终居中销。 但是,当我放大地图时出现问题。 在缩放 – 地图目标更改的位置和我的imageView指向另一个位置。

我可以检测是否缩放变化,但我实际上不能强制GMSMapView做只有缩放没有任何位置的变化。

-(void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { if (mZoomLevel != mapView.camera.zoom) { mZoomLevel = mapView.camera.zoom; } } 

所以基本上,即使我进行缩放,我也想总是居中放置。 我试过GMSMarker,但是在跟踪地图中心的时候性能有问题。 它不会立即执行,所以我决定使用imageView。

主要问题:如何在执行缩放时locking地图的当前位置?

谷歌解决这个问题谷歌地图SDK 1.10.0。

解决方法是在configurationGMSMapview时简单地添加这一行:

 _mapView.settings.allowScrollGesturesDuringRotateOrZoom = NO; 

那么回到这个问题10天后,我终于解决了! 答案很简单!

这里有几个步骤:1.添加imageView作为GMSMapView顶部的标记2.添加UIPanGestureRecognizer到GMSMapView(不要忘记设置委托,这是重要的)3.然后使用此代码:

 - (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { _mapView.settings.scrollGestures = true; } } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if (gestureRecognizer.numberOfTouches > 1) { _mapView.settings.scrollGestures = false; } else { _mapView.settings.scrollGestures = true; } return true; } 

Swift 3:

 mapView.settings.scrollGestures = false