Cách tắt điều hướng bản đồ trong ArcGIS Server JavaScript API v4.x

Nov 16 2020

Trong phiên bản 3.x cũ hơn của API ArcGIS Server JavaScript, có thể tắt điều hướng bản đồ bằng cách sử dụng disableMapNavigation()như giải thích trong Tắt bản đồ trong API ArcGIS cho Javascript

Điều gì tương đương với việc tắt điều hướng bản đồ trong phiên bản 4.x của API JavaScript Máy chủ ArcGIS? Trường hợp sử dụng là tạm thời ngăn điều hướng bản đồ trong khi truy vấn bên ngoài đang chạy.

MapView có thuộc tính điều hướng cho phép tắt một số loại điều hướng nhất định, như trong ví dụ tạihttps://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=view-disable-navigation, nhưng điều này dường như không cho phép tắt tất cả điều hướng.

Ví dụ: ngay cả khi sử dụng:

navigation: {
  gamepad: {enabled: false},
  browserTouchPanEnabled: false,
  momentumEnabled: false,
  mouseWheelZoomEnabled: false
}

người dùng có thể xoay bản đồ bằng chuột, thu phóng bằng cách nhấp đúp, xoay bản đồ bằng nút chuột phải, v.v.

Trả lời

4 DrorBogin Nov 16 2020 at 12:55

Nó dường như vô hiệu hóa hoàn toàn điều hướng bản đồ (trong một điều kiện, như bạn đã yêu cầu), bạn sẽ cần phải dừng truyền sự kiện từ một số sự kiện nhất định.

view.on(["click", "drag", "double-click", "mouse-wheel", "hold", ], function(event) {
  if(thinking){
    event.stopPropagation();
  }
});

Điều này sẽ ngăn chặn tất cả những sự kiện, nếu bạn muốn vô hiệu hóa một nhấp chuột hoặc sự kiện kéo từ nút chuột phải (trong trường hợp bạn muốn chỉ xoay vô hiệu hóa chẳng hạn), thì click, dragdouble-clicksự kiện này cũng có một tài sản nút mà bạn có thể sử dụng:

Mô tả giá trị
0 nhấp chuột trái (hoặc chạm)
1 nhấp chuột giữa
2 nhấp chuột phải

* Lấy từ tài liệu sự kiện xem

BIÊN TẬP

Sau khi hỏi về cách Tắt tính Shift+Left-click+Dragnăng thu phóng, tôi quay lại tài liệu và tìm thấy ví dụ này

Rõ ràng bạn có thể thêm định nghĩa của một phím bàn phím được nhấn vào sự kiện để ngăn sự kiện đó nổi bọt.

view.on("drag", ["Shift"], function(event) {
  event.stopPropagation();
});

view.on("drag", ["Shift", "Control"], function(event) {
  event.stopPropagation();
});
1 StephenLead Nov 16 2020 at 16:14

Ngoài câu trả lời xuất sắc của Dror, để ngăn người dùng sử dụng các nút Phóng to / Thu nhỏ, bạn có thể tạo một tiện ích Thu phóng , sau đó có thể gỡ bỏ khi cần thiết.

Loại bỏ Thu phóng tiêu chuẩn khi khởi tạo chế độ xem bằng từ khóa ui và không bao gồm điều khiển Thu phóng:

const view = new MapView({
  container: "viewDiv",
  map: map,
  ui: { components: ["attribution"] }
});

Sau đó thêm / xóa điều khiển Thu phóng theo yêu cầu:

let zoomControl = new Zoom({
  view: view
});

// Enable zoom
view.ui.add(zoomControl, {
  position: "top-left"
});

// Disable zoom
view.ui.remove(zoomControl);