我遇到了一段时间无法解决的问题。
我在中心有一个带有imageView的GMSMapView。结果 - 我可以拖动地图并始终有中心针。但是当我缩放地图时会出现问题。 在缩放时 - 地图目标的位置发生变化,我的imageView指向另一个位置。
我可以检测到缩放是否发生变化,但实际上我无法强制GMSMapView进行缩放而不会改变任何位置。
-(void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position
{
if (mZoomLevel != mapView.camera.zoom)
{
mZoomLevel = mapView.camera.zoom;
}
}
所以基本上,即使我执行缩放,我也希望始终有中心针。 我尝试过GMSMarker - 但是在关注地图中心时遇到了性能问题。它没有立即执行,所以我决定使用imageView。
主要问题:如何在执行缩放时锁定地图的当前位置?
答案 0 :(得分:6)
谷歌用谷歌地图sdk 1.10.0解决了这个问题。
解决方案是在配置GMSMapview时简单地添加此行:
_mapView.settings.allowScrollGesturesDuringRotateOrZoom = NO;
答案 1 :(得分:3)
好吧,经过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;
}
答案 2 :(得分:-1)
斯威夫特3:
mapView.settings.scrollGestures = false