Ios 是否有用于平移或缩放地图的Google地图事件侦听器?

Ios 是否有用于平移或缩放地图的Google地图事件侦听器?,ios,iphone,google-maps,google-maps-sdk-ios,Ios,Iphone,Google Maps,Google Maps Sdk Ios,我希望能够检测用户是否缩小或移动了地图中心。我看到过一篇关于事件监听器的帖子,但是在Javascript中,我试图看看Google Maps iOS SDK中是否有类似的东西。我看到iPad的Yelp应用程序有类似的功能,如果你放大/缩小或移动地图,就会从底部出现一个工具栏,让用户知道他们是否想“在区域内重做搜索”。我想做类似的事情,用其他/更多的标记重新加载地图 不幸的是,我看过谷歌地图的参考指南,但没有找到任何东西。如果有人有过类似的经验,或者对如何实现这一点有任何指导,那么任何信息都是非常

我希望能够检测用户是否缩小或移动了地图中心。我看到过一篇关于事件监听器的帖子,但是在Javascript中,我试图看看Google Maps iOS SDK中是否有类似的东西。我看到iPad的Yelp应用程序有类似的功能,如果你放大/缩小或移动地图,就会从底部出现一个工具栏,让用户知道他们是否想“在区域内重做搜索”。我想做类似的事情,用其他/更多的标记重新加载地图

不幸的是,我看过谷歌地图的参考指南,但没有找到任何东西。如果有人有过类似的经验,或者对如何实现这一点有任何指导,那么任何信息都是非常有用的。提前谢谢

我看过的谷歌地图文档链接:


尝试委托方法
-(void)mapView:(GMSMapView*)mapView将移动:(BOOL)手势
,BOOL参数告诉您mapView是否由用户移动。

我使用此委托检测相机更改,包括缩放和位置:

- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position;
编辑

使用此代码,您可以获得可视区域的各个角落:

NSLog(@"%f,%f",_mapView.projection.visibleRegion.farLeft.latitude,_mapView.projection.visibleRegion.farLeft.longitude);//north west
NSLog(@"%f,%f",_mapView.projection.visibleRegion.farRight.latitude,_mapView.projection.visibleRegion.farRight.longitude);//north east
NSLog(@"%f,%f",_mapView.projection.visibleRegion.nearLeft.latitude,_mapView.projection.visibleRegion.nearLeft.longitude);//south west
NSLog(@"%f,%f",_mapView.projection.visibleRegion.nearRight.latitude,_mapView.projection.visibleRegion.nearRight.longitude);//south east

要检测移动/缩放谷歌地图视图的结束:

我在寻找如何检测谷歌地图是否最终通过移动/缩放来获取地图中心时遇到了这个问题。正如Allemattio所建议的,我尝试在didChangeCameraPosition中捕获这个事件,但当我们平移或缩放地图时,它会被多次调用。幸运的是,我找到了map view的另一个委托方法,当我们最终平移或缩放map view时调用该方法:

-(void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position
{
      NSLog(@"mapView ended with panning/zooming in %s",__PRETTY_FUNCTION__);
}
Swift

extension MyMapViewController:GMSMapViewDelegate {

    func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
        //do something
    }
}

太神了我如何使用它来检测相机或地图是否超出帧/边界/区域?我会创建自己的位置对象,看看两者是否相同吗?另外,如何获得右上角和左下角的坐标?谢谢!如何检测用户是否已离开某个区域。我有这些标记,并已设置地图,以显示所有的标记,并希望重新加载新的标记,如果他们离开这个地区。我知道谷歌地图有
GMSVisibleRegion
,但不知道如何将其用于这些代理调用。有什么想法吗?@Chris,看来你有两件事要做:第一件是显示工具栏,第二件是根据当前可见区域重新加载标记?如果是这样,我将在
-(void)地图视图中显示工具栏:(GMSMapView*)地图视图将移动:(BOOL)手势
,并在
-(void)地图视图中重新加载标记:(GMSMapView*)地图视图的didChangeCameraPosition:(GMSCameraPosition*)位置
。另外,在移动过程中会多次调用
didchangeraposition
委托,您可以在延迟时间内重新加载标记。这是减少方法调用的最佳方法,因为didchangeraposition多次调用soo!塔克斯