我希望能够检测用户是否缩小或移动了地图中心。我已经看过关于事件监听器的帖子但是在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
答案 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
}
}