允许捏合缩放,同时使用iOS Google Maps SDK进行动画处理



我在适用于iOS的Google Maps SDK中使用animateToBearing方法,以便我可以使用设备的指南针旋转地图:https://developers.google.com/maps/documentation/ios/views#bearing_orientation

在继续调用此方法时,地图对常规捏合缩放功能无响应。有什么方法可以让地图继续允许捏合缩放,同时对方位角进行动画处理?

我像这样实现它:

func locationManager(manager: CLLocationManager!, didUpdateHeading newHeading: CLHeading!) {
        mapView.animateToBearing(newHeading.magneticHeading)
}

在要求位置管理器更新标题之前,请确保对其进行过滤,使其不会在每次微小的移动时更新。如果您这样做,Google 地图几乎会一直制作动画,并且在为地图制作动画时不会响应您的手势。

在 Objective-C 中,这是代码:

self.locationManager.headingFilter = 5;

您可以自己进行实验,但我发现将其更改为大约 1 到 5 度会使其非常灵敏,同时仍启用手势。

所以很抱歉误解了之前的问题。我假设你也在使用animateToZoom。

答:所以不完全确定它是否可能,因为它有点设计使然。例如,当将相机移动到地图上的不同点时,让手势停止该行为在逻辑上是有意义的,反之亦然:例如,如果我用手指将相机保持在某个位置,触发显式动画仍应移动它。

但是,如果您在更改值时禁用动画,您可能会有更好的时间,但我认为这不会有太大帮助,因为"设置"也会停止手势。但是动画更积极地试图在其生命周期内阻止它(例如,超过 250 毫秒或任何默认值)。
下面是实现。

希望这是清晰和有帮助的。

CATransaction.begin()     
CATransaction.setDisableActions(true)
        map.animateToBearing(value)
        CATransaction.commit()

最新更新