Câu hỏi Bản đồ Google iOS - Cách biết thời điểm người dùng bắt đầu hoặc ngừng kéo bản đồ


Tôi đang phát triển với Google map SDK 6.1 .Tôi muốn biết khi nào người dùng bắt đầu kéo hoặc dừng kéo bản đồ, tôi chỉ tìm thấy 2 hàm đại biểu: didChangeCameraPosition và idleAtCameraPosition. Có cách nào để bắt khi người dùng bắt đầu hoặc dừng kéo bản đồ không?


16
2018-02-21 09:36


gốc




Các câu trả lời:


Để phát hiện xem người dùng có kéo bản đồ hay không thì tôi nghĩ tốt hơn nên sử dụng phương pháp này

- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture

và kiểm tra xem gesture đối số là true.

Các didChangeCameraPosition được gọi, như đã đề cập, nhiều lần nhưng vì nó cũng được gọi bởi cả hai thiết lập trung tâm bản đồ từ mã và như là kết quả của một cử chỉ, bạn không thể thực sự thấy sự khác biệt trong phương pháp đó một mình.


20
2017-08-01 15:17



chính xác những gì tôi đã tìm kiếm :) ... đã không nhận thấy rằng param cử chỉ là bool khi tôi nhìn vào tài liệu - micromanc3r
điều này nên được đánh dấu là chấp nhận, bởi vì cử chỉ là đúng chỉ khi người dùng kéo bản đồ để thay đổi máy ảnh nếu không, nếu máy ảnh được thay đổi một cách rõ ràng bởi biến cử chỉ lập trình là sai. - Saifee
vấn đề ở đây là cử chỉ zoom cũng kích hoạt phương pháp này với cử chỉ = YES - tomeron11
Tôi đoán bạn có thể tranh luận hoạt động thu phóng khi bạn sử dụng hai ngón tay trên bản đồ là thao tác kéo quá nó không được kích hoạt với gesture=YES khi bạn lập trình gọi các phương thức thu phóng - Peter Theill
Cảm ơn bạn đã giải pháp cho tôi. @Saifee - kalpesh


Từ tài liệu :

- (void) mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 

Được gọi khi bản đồ trở nên nhàn rỗi, sau bất kỳ cử chỉ nổi bật nào hoặc hình động đã hoàn thành (hoặc sau khi máy ảnh đã được đặt rõ ràng).

Vì vậy, với đại biểu này, bạn có thể nắm bắt khi người dùng ngừng kéo mapView.

Để được thông báo khi người dùng bắt đầu kéo, chỉ cần sử dụng đại biểu khác mà bạn đã chỉ ra:

- (void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 

Được gọi liên tục trong bất kỳ hoạt ảnh nào hoặc cử chỉ trên bản đồ (hoặc một lần, nếu máy ảnh được đặt rõ ràng).

Điều này có thể không được gọi cho tất cả các vị trí camera trung gian. Nó luôn được gọi cho vị trí cuối cùng của hoạt ảnh hoặc cử chỉ.

Tôi không chắc điều gì làm bạn bối rối.


5
2018-02-21 09:47



Tôi có cùng một vấn đề như Tomsk tequilar hỏi, nhưng câu trả lời của bạn là những gì chúng ta có thể biết từ các tập tin lớp thư viện google sdk, bạn chỉ cần sao chép nó từ nó và dán ở đây. Những gì chúng tôi muốn là một số cách tiếp cận khác từ này. - Nitesh Borad


Hãy coi chừng idleAtCameraPosition là khi bản đồ ngừng di chuyển không khi bạn nhấc ngón tay lên.

Tôi đã phải phân lớp GSMapView và thêm PanGestureRecognizer >> State ENDED để nhận khi ngón tay được nâng lên.

https://github.com/clearbrian/GoogleMapiOS_TapEndedGesture


1
2018-02-21 11:55



+1 Cảm ơn. Nó hữu ích. - tequilar Tomsk


Swift 4:

func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
    if (gesture){
        print("dragged")
    }
}

1
2018-02-02 10:30