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

时间:2014-02-07 01:36:52

标签: ios iphone google-maps google-maps-sdk-ios

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

我看过谷歌地图的参考指南,但遗憾的是没找到任何东西。如果有人有类似的东西或有关如何实现这一点的任何指导,任何信息都会很棒。提前谢谢!

我查看的Google地图文档链接:

https://developers.google.com/maps/documentation/ios/reference/protocol_g_m_s_map_view_delegate-p

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_coordinate_bounds

4 个答案:

答案 0 :(得分:11)

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

- (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

答案 1 :(得分:8)

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

答案 2 :(得分:1)

检测移动/缩放Google地图视图的结束:

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

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

答案 3 :(得分:1)

<强>夫特

extension MyMapViewController:GMSMapViewDelegate {

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