我在通过手势识别器捕获GMSMapView上的拖动/平移手势时遇到了奇怪的问题。这个问题只出现在从GMS 1.2更新到1.3.1之后,其中(引用文档),
这个设置在GMS 1.2.0版本下运行得非常完美。但是在更新后,GMSMapView仍然像以前一样响应手势,但上述方法却没有被调用!有人知道怎么回事或如何修复吗?
我有一个UIViewController,在其主视图下持有一个GMSMapView。我发现GMSMapDelegate没有提供处理拖动/平移手势的方法,因此我向UIViewController添加了一个UIPanGestureRecognizer,将其链接到IBAction选择器,并设置引用输出和输出集合,如此处所示的屏幕截图:http://i.stack.imgur.com/gktoa.png 因此,任何拖动操作都会简单地触发下面的触摸被GMSMapView更积极地消耗。
recognizeDragOnMap:
选择器:-(IBAction)recognizeDragOnMap:(id)sender {
NSLog(@"recognizeDragOnMap");
UIGestureRecognizer *gestureRecognizer = (UIGestureRecognizer *)sender;
if (gestureRecognizer.state != UIGestureRecognizerStateEnded) {
NSLog(@"Still dragging");
return;
}
NSLog(@"DragEnded");
GMSCameraPosition *position;
if ((position = self.mapView.camera)) {
self.automaticCameraPositionChange = NO;
CLLocationCoordinate2D coordinate = [position targetAsCoordinate];
CLLocation *location = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];
[self.origin dragPinToLocation:location];
} else {
NSLog(@"No map camera");
}
}
这个设置在GMS 1.2.0版本下运行得非常完美。但是在更新后,GMSMapView仍然像以前一样响应手势,但上述方法却没有被调用!有人知道怎么回事或如何修复吗?
mapView:didChangeCameraPosition:
,但这并不足够:我需要能够区分由地图手势生成的相机更新和其他操作生成的相机更新。 - Rafael Kaufmann