Cách ngăn bản đồ lia máy khi cuộn trang


10

Khi một trang HTML chứa bản đồ và người dùng cuộn trang xuống bằng con lăn chuột của họ, khi chuột của người dùng đi qua bản đồ, trang sẽ dừng cuộn trong khi bản đồ sẽ xoay. Xem bản trình diễn1 .

Tôi muốn mô phỏng hành vi chi tiết tại Thủ thuật sử dụng đơn giản cho Google Maps bằng API API của máy chủ ArcGIS 3.x.

Đó là, trang sẽ cuộn trừ khi người dùng kéo rõ ràng trong bản đồ, trong trường hợp đó bản đồ sẽ xoay .

Hành vi gần như có trong Demo2 , nơi trang cuộn ngay cả khi chuột của bạn ở trên bản đồ.

map.on("load", function(){
  // Disable navigation by default, so scrolling the page doesn't scroll the map
  map.disableMapNavigation();

  // When the user tries to pan the map, allow this
  map.on('mouse-drag-start', function(){
    map.enableMapNavigation();
  });

  // Restore the no-scroll behaviour when the mouse leaves the map
  map.on('mouse-out', function(){
    map.disableMapNavigation();
  });
});

Tuy nhiên, pan bản đồ không được bật trừ khi bạn nhấp lần đầu tiên vào bản đồ, nhả nút chuột và sau đó xoay. Có thể đạt được hiệu ứng liền mạch được hiển thị với Google Maps trong bài đăng trên blog không?

Tôi đã thử mouse-drag, mouse-drag-startmouse-downcác sự kiện nhưng hành vi là như nhau cho tất cả các sự kiện.


1
Bạn có thể thử khi bạn enableMapNavigationđến ngay sau khi phát lại mouse-drag-startsự kiện. Tôi tìm thấy dojotoolkit.org/reference-guide/1.10/dojo/Evented.html như một lớp võ đường để phát ra các sự kiện. Vì vậy, bạn sẽ kéo (hoặc nhấp) trên bản đồ -> bật điều hướng bản đồ -> trong cùng chức năng gọi sự kiện kéo (có thể chỉ cần gọi hoặc có thể yêu cầu tham số) -> đi về việc kéo doanh nghiệp của bạn. Nó có thể nhặt con chuột xuống và kéo theo nó. Có thể chỉ là một kết hợp của việc thử các sự kiện đó theo các thứ tự khác nhau, v.v.
Branco

Câu trả lời:


2

Bạn không bao giờ đưa ra lý do cho việc sử dụng phương thức dis / enableMapNavulation hơn là phương thức dis / enableScrollWheelZoom . Sử dụng cái sau.


Thật không may, điều này không hoạt động vì (1) hành vi mặc định của bản đồ là xoay (không phóng to) khi bánh xe cuộn được sử dụng và (2) map.disablePan();không áp dụng cho bánh xe cuộn, chỉ kéo-to-pan: jsfiddle.net/g7npfuvn/16
Stephen chì

À, vấn đề là tôi đã thử nghiệm trên máy Mac, smartNavigationcó hiệu lực: Khi đúng, đối với máy tính Apple có sử dụng bàn di chuột hoặc chuột ma thuật, hãy vuốt chảo thay vì phóng to . Nếu tôi đặt thành sai và kiểm tra trên PC, nó sẽ hoạt động. Vì vậy, có vẻ như đây là một hạn chế của API API máy chủ ArcGIS trên máy Mac.
Stephen chì

Nếu bạn đặt giá trị thành false thì bạn phải thấy hành vi tương tự bất kể phần cứng os +. Cân nhắc lắng nghe một sự kiện mousemove và khi phát hiện tắt smartNav, tương tự như những gì đã được thực hiện ở đây .
Zack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.