5

在 Apple 地图中有一个委托方法

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

并在我结束滚动或平移地图时触发,但我找不到谷歌地图的这种方法。有一种方法

- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position

但是当地图仍在滚动时,此方法会继续触发,我不希望这样。只有在滚动完成时,我才需要更改属性。

4

3 回答 3

12

最新的 SDK 版本 1.4.0 - 2013 年 7 月添加了新的委托方法

- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 

将在任何相机移动或滚动动作结束时触发

于 2013-07-27T12:50:31.100 回答
1

有一个功能请求添加如下内容:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4722

与此同时,您也许可以通过使用常规计时器来解决它,该计时器检查地图位置自上次调用计时器以来是否发生了变化。如果不是,则用户已停止移动地图,因此您可以更新您的属性。

于 2013-04-11T10:33:34.457 回答
0

当心 idleAtCameraPosition 是地图停止移动时而不是当您抬起手指时。

从 Google sdk iOS 1.7 开始,我注意到即使您的手指还在地图上,它也会提前触发。

因此,如果您使用它来重绘覆盖/标记,它可能会发生得太早并导致口吃。

我必须继承 GSMapView 并添加 PanGestureRecognizer >> State ENDED 才能在手指抬起时得到。

https://github.com/clearbrian/GoogleMapiOS_TapEndedGesture

于 2014-02-21T11:54:28.983 回答