Có cách nào để vô hiệu hóa quán tính kéo trên Google Maps V3 không? Có vẻ như nó phải là một MapOption, nhưng tôi không thể tìm thấy bất kỳ cách nào để làm điều này.Tắt tính quán tính/đà kéo trên Google Maps V3
Trả lời
Điều này không thể thực hiện được với API Maps API tại thời điểm này. Xem xét nộp đơn yêu cầu tính năng ở đây:
Tôi chạy vào vấn đề này cùng một ngày hôm nay, với một số tùy chỉnh nổi của Div trên bản đồ cần phải được tái định vị trên bản đồ di chuyển. Việc thay đổi vị trí của tôi hoạt động tốt miễn là người dùng dừng hẳn sau khi kéo chuột trước khi cho phép chuột đi (vì vậy sẽ không có động lượng), nhưng nếu chỉ cần kéo nhanh và phát hành div sẽ kết thúc một chút.
Để sửa lỗi này, tôi nối vào sự kiện kéo và các sự kiện nhàn rỗi:
var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });
Điều gì xảy ra sau khi bạn đã kéo và bản đồ đã đi đến một điểm dừng (sau đà được thực hiện) bản đồ 'snaps' trở lại vị trí.
Nếu quá trình chụp quá đột ngột, người ta có thể panTo hoặc làm động động chuyển động theo một cách nào đó. Hy vọng rằng sẽ giúp, nó không hoàn hảo, nhưng đó là một cách để đảo ngược đà từ một sự kiện kéo.
Kể từ v3, bạn có thể móc vào sự kiện 'center_changed' sẽ tính thời gian giữa các sự kiện' dragend' và 'idle'. https://developers.google.com/maps/documentation/javascript/events –
@DevinMcInnis Đúng vậy. Điều này cũng đã được thảo luận về vấn đề mở trên mã google tại đây: https://code.google.com/p/gmaps-api-issues/issues/detail?id=3543&q=idle&colspec=ID%20Type%20Status%20Introduced% 20Fixed% 20Summary% 20Stars% 20ApiType% 20Internal Cụ thể: "Trường hợp sử dụng này có thể được giải quyết bằng cách thêm một' idle' listener khi một sự kiện 'dragend' được kích hoạt. Để định vị lớp phủ, hãy sử dụng 'bounds_changed' hoặc' center_changed' thay vì 'drag'" – EdgeCaseBerg
Tôi khá chắc chắn rằng ít nhất có thể phản tác dụng động lượng. Ai đó hãy sửa tôi nếu tôi sai! Để đơn giản, ví dụ: giả sử vùng chứa bản đồ của bạn có một số width
của 100vw
và height
của 100vh
. Bạn chỉ cần gọi getCenter()
trong một hàm được gọi bởi sự kiện mouseup
và sau đó sử dụng các tọa độ đó ngay lập tức setCenter()
?
function initMap(){
...
var win = window;
google.maps.event.addDomListener(win, 'mouseup', setCoords);
function setCoords(){
var x = myMap.getCenter();
var lat = x.lat();
var lng = x.lng();
myMap.addListener('center_changed', function(lat, lng){
myMap.setCenter(new google.maps.LatLng(lat, lng));
};
};
Đoạn mã trên thực sự hoạt động, nhưng kicker là nó chỉ có tác dụng một lần cho đến khi trình duyệt trở nên dường như quá tải và tạo ra các lỗi của router RangeError: kích thước gọi stack tối đa vượt quá.
Bạn không chắc chắn phải làm gì bây giờ.
Thông tin thêm về điều này here.
Trình nghe center_changed đặt trung tâm bản đồ, sẽ kích hoạt sự kiện center_changed, tạo vòng lặp vô hạn – geocodezip
@geocodezip Cảm ơn bạn đã trả lời. Tôi nhận ra rằng một thời gian ngắn trước đây, điều thú vị là bạn sẽ mong đợi nó hoạt động hoàn hảo mà không cần thêm 'myMap.addListener ...' nhưng nó không hoạt động như thể mã không tồn tại hãy kiểm tra chủ đề khác của tôi. http://stackoverflow.com/questions/39626454/functions-uncaught-rangeerror-maximum-call-stack-size-exceeded-with-google-m –
Sử dụng tùy chọn không có giấy tờ disablePanMomentum
ví dụ .:
new google.maps.Map(document.getElementById(id), {
disablePanMomentum: true,
backgroundColor: 'none',
disableDefaultUI: true,
center: {
lat: 40.674,
lng: -73.945
},
zoom: 2,
...
Đẹp nhất. –
@PedroAdameVergara Kỹ thuật đảo ngược mở rộng hoặc một số kỹ năng regex cơ bản Hãy chọn lựa của bạn – Orwellophile
@Orwellophile có thể giải thích cách yo u sẽ sử dụng regexs để tìm ra điều này? Tôi rất muốn biết, cổ vũ –
- 1. cách tắt/bật kéo, thu phóng và thay đổi con trỏ trong Google maps v3
- 2. V3 của Google Maps: Cách tắt "chế độ xem phố"?
- 3. GWT + API Google Maps v3
- 4. google maps v3 marker toolover
- 5. API Google Maps v3 BrowserIsCompatible
- 6. Android Google Maps: tắt thao tác kéo trong MapFragment
- 7. Google Maps v3 Biểu tượng hướng
- 8. API JavaScript của Google Maps v3
- 9. Trung tâm Google Maps (V3) trên trình duyệt in
- 10. jqtouch/google maps api v3 issue
- 11. Google Maps v3 InfoWindow Quá Rộng
- 12. Google Maps API V3 phương thức fitBounds()
- 13. API Google Maps v3 sẽ không tắt bánh xe di chuyển sau khi tải bản đồ
- 14. Thao tác kéo Điểm đánh dấu của Google Maps V3 vào Polyline
- 15. tắt tính năng kéo thu phóng trong bản đồ Google bằng cách nhấp vào nút
- 16. Điểm đánh dấu Bouncy trong Google Maps v3
- 17. Điểm đánh dấu tắt trên Google Map API v3
- 18. API Google Maps V3: giới hạn bản đồ giới hạn
- 19. WebView Xoay/kéo Google Maps trong Qt5
- 20. Xóa dấu chỉ đường khỏi API Google Maps V3
- 21. API Google Maps: Ngăn việc kéo vào vùng màu xám
- 22. Bật hiển thị GL mới trong API Google Maps v3?
- 23. Cách thay đổi MapTypeid trong API Google Maps v3?
- 24. Google Maps v3 - Điểm đánh dấu không hiển thị
- 25. google maps API v3 - cách vẽ đa giác động/polylines?
- 26. API Google Maps v3 xóa tất cả các đường polycarbonate
- 27. Loại bỏ một Marker trong Google Maps API v3
- 28. Mã ngôn ngữ trong API Java của Google Maps V3
- 29. Vùng màu xám V3 của Google Maps API
- 30. Google Maps v3 InfoBox Thêm Trình xử lý Sự kiện
Tôi đoán đây là một vấn đề được biết đến với không có giải pháp? – pixelfreak