谷歌地图SDK iOS - 防止地图在缩放时更改位置

4

有一个问题困扰我已经有一段时间了。

我有一个带有imageView的GMSMapView,它位于中心位置的前面。结果是 - 我可以拖动地图并始终拥有居中的标记。但当我缩放地图时,问题就出现了。在缩放过程中 - 地图目标的位置发生变化,我的imageView也会指向另一个位置。

我可以检测到缩放的变化,但我无法强制GMSMapView仅进行缩放而不改变任何位置。

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

基本上,我希望始终具有居中的固定点,即使在缩放时也是如此。 我尝试了GMSMarker-但是当跟随地图中心时,它的性能存在问题。 它不会立即执行,因此我决定使用imageView。
主要问题:如何在执行缩放时锁定地图的当前位置?

好的,我发现我实际上可以强制地图锁定并停止滚动。 GMSUISettings地图属性具有“scrollGestures”和“zoomGestures”标志,这可能有所帮助。但是我面临另一个问题。我必须返回到GMSMarker而不是imageView,因为imageView在缩放时仍会改变位置(实际上是背景中的地图)。我可以切换标记和imageView,但看起来很糟糕。 我正在尝试实现GetTaxi iOS应用程序的效果。那里一切都非常流畅。但仍然没有运气。 - quarezz
3个回答

8

谷歌通过google maps sdk 1.10.0解决了这个问题。

解决方案是在配置GMSMapview时添加这一行代码:

_mapView.settings.allowScrollGesturesDuringRotateOrZoom = NO;

将“设置为false解决了我的问题,现在我想调用反向地理编码服务来获取地址。哪个位置更好地调用反向地理编码服务以减少调用次数?因为idleAtCameraPosition委托在缩放时也会被调用。”翻译成中文。请仅返回翻译后的文本内容,不要进行解释。 - siva krishna
但在我的情况下(Maps 2.7.0),这仍然会更改中心位置 :-( 我不能滚动,但相机目标位置会更新。有什么方法可以防止这种情况发生吗? - blackjacx

3

经过10天对这个问题的回顾,我终于解决了它! 答案其实很简单!

以下是几个步骤: 1. 将imageView添加为GMSMapView上方的标记 2. 为GMSMapView添加UIPanGestureRecognizer(别忘了设置委托,这很重要) 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;
}

以下答案应该被视为SDK更新后的正确答案。 - novak

-1

Swift 3:

mapView.settings.scrollGestures = false

5
好的,我会尽力以最简明扼要的方式翻译,并保持原意不变。请提供需要翻译的内容。 - jjj
@jjj 这只是下面一个答案的 Swift 版本,实际上并没有什么帮助。¯_(ツ)_/¯ - quarezz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接