Я разрабатываю с помощью Google map SDK 6.1
. Я хочу знать, когда пользователь начинает перетаскивать или останавливать перетаскивание карты, я только что нашел 2 функции делегата: didChangeCameraPosition
и idleAtCameraPosition
. Есть ли способ поймать, когда пользователь начинает или останавливает перетаскивание карты?
Карта Google iOS - Как узнать, когда пользователь начинает или прекращает перетаскивать карту
Ответ 1
Чтобы определить, перетащил ли пользователь карту, я думаю, что лучше использовать этот метод делегата
Obj-C
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture
Swift
func mapView(_ mapView: GMSMapView, willMove gesture: Bool)
и проверьте, является ли аргумент gesture
true
или нет.
didChangeCameraPosition
вызывается, как уже упоминалось, много раз, но так как он также вызывается как путем установки центра карты из кода, так и в результате жеста, вы не сможете увидеть разницу в этом методе в одиночку.
Ответ 2
Из документации :
- (void) mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position
Вызывается, когда карта бездействует, после любых выдающихся жестов или анимации (или после явной настройки камеры).
Таким образом, с этим делегатом вы можете снимать, когда пользователь перестал перетаскивать mapView.
Чтобы получить уведомление, когда пользователь начал перетаскивать, просто используйте другого делегата, которого вы указали:
- (void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position
Вызывается повторно во время любой анимации или жестов на карте (или один раз, если камера явно установлена).
Это не может быть вызвано для всех промежуточных положений камеры. Он всегда вызывается для конечной позиции анимации или жеста.
Я не уверен, что тебя смущает.
Ответ 3
Swift 4:
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
if (gesture){
print("dragged")
}
}
Ответ 4
Остерегайтесь idleAtCameraPosition - это когда карта перестает двигаться, когда вы поднимаете палец.
Мне пришлось подклассифицировать GSMapView и добавить PanGestureRecognizer → State ENDED, чтобы получить при поднятии пальца.