我正在使用Google map SDK 6.1
进行开发。我想知道用户何时开始拖动或停止拖动地图,我只找到了2个委托功能:didChangeCameraPosition
和idleAtCameraPosition
。有没有办法在用户开始或停止拖动地图时捕获?
答案 0 :(得分:27)
要检测用户是否拖动了地图,我认为最好使用此方法
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture
并检查gesture
参数是否为true
。
如上所述,didChangeCameraPosition
被多次调用,但由于它既可以通过代码设置地图中心来调用,也可以通过手势调用,但您无法真正看到仅在该方法上存在差异。
答案 1 :(得分:7)
- (void) mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position
当地图变为空闲时,在任何未完成的手势或动画完成后(或在明确设置相机后)
。因此,使用此委托,您可以在用户停止拖动mapView时捕获。
要在用户开始拖动时收到通知,只需使用您指出的其他代理:
- (void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position
在任何动画或地图上的手势期间重复调用(或者,如果明确设置了相机,则重复一次)。
对于所有中间相机位置,可能不会调用此方法。它总是被调用为动画或手势的最终位置。
我不确定是什么令你感到困惑。
答案 2 :(得分:6)
Swift 4:
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
if (gesture){
print("dragged")
}
}
答案 3 :(得分:1)
谨防idleAtCameraPosition是指当你抬起手指时地图停止移动。
我必须继承GSMapView并添加PanGestureRecognizer>>当手指抬起时状态结束。
答案 4 :(得分:0)
Swift 5.1
element.style {
word-break: break-all;
width: 14px;
}
.job-title-and-info .title .title-body .info span {
font-size: 1.4rem;
font-weight: 400;
font-family: "Roboto", sans-serif;
margin-right: 15px;
color: #6f7484;
此方法仅在拖动地图视图开始时调用,因此它无助于获取新坐标。
通过对Google api和其他方法的分析,我没有找到合适的方法。对于这个问题,最好的答案是使用平移手势。
将平移手势添加为mapView
func mapView(_ mapView: GMSMapView, willMove gesture: Bool)
平移手势方法的实现
self.mapView.settings.consumesGesturesInView = false
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self. panHandler(_:)))
self.mapView.addGestureRecognizer(panGesture)