GMSMapView touchesbegan выстрелил только один раз
Я пытаюсь расширить GMSMapView, чтобы создать некоторые функции кластеризации, и мне нужно определить, когда пользователь перемещает карту, чтобы отключить визуализацию кластера и снова включить ее, когда он ее закончит.
Я переопределил touchesbegan и touchesended, но touchesbegan вызывается только один раз. После переопределения hittest я смог увидеть, что GMSVectorMapView обрабатывает касания GMSMapView, и если я изменю возврат этой функции, карта не будет двигаться.
Есть ли способ захватить это события или дать какое-то действие, когда пользователь взаимодействует с картой.
С Наилучшими Пожеланиями, Пина Тожале Марлон
2 ответа:
Я не уверен, что полностью понимаю, какие прикосновения вам нужно обнаружить или почему/как вы должны их обнаружить. Однако у меня была аналогичная проблема с обнаружением пользовательских жестов панорамирования поверх GMSMapView из-за touchesbegan: вызывается только один раз.
У меня была своя кнопка "текущее местоположение", которая позволяет пользователю переключать центрирование карты на их местоположение вкл/выкл. Мне нужно было выяснить, когда пользователь "панорамирует" карту, не прерывая прием карты панорамирования (я все еще хотел, чтобы карта в пан, а также).
Сначала я создал карту:
Затем я создал распознаватель жестов pan и добавил его в свойство распознавателей жестов// Creates Map centered at current location GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:theLocationManager.location.coordinate.latitude Longitude:theLocationManager.location.coordinate.longitude zoom:15]; theMapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; theMapView.myLocationEnabled = YES; theMapView.delegate = self; theMapView.camera = camera; self.view = theMapView;
theMapView
. Я убедился, что установил цель вself
с помощью метода селектораdidPan:
// Watch for pan UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(didPan:)]; theMapView.gestureRecognizers = @[panRecognizer];
Наконец, в том же главном файле я реализовал метод
didPan:
, чтобы реагировать, когда пользователь панорамирует:- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer { NSLog(@"DID PAN"); // React here to user's pan }