ArcGIS Server JavaScript API v4.x에서 맵 내비게이션을 비활성화하는 방법

Nov 16 2020

는 ArcGIS 서버 자바 스크립트 API의 이전 버전 3.x에서는 할 수 있었다 하지 않도록지도 내비게이션 사용 disableMapNavigation()에 설명 된대로 자바 스크립트의 ArcGIS API에서 해제지도

ArcGIS Server JavaScript API 버전 4.x에서 맵 내비게이션을 비활성화하는 것과 동등한 것은 무엇입니까? 사용 사례는 외부 쿼리가 실행되는 동안지도 탐색을 일시적으로 방지하는 것입니다.

mapView에는 다음 예제와 같이 특정 유형의 탐색을 비활성화 할 수 있는 탐색 속성이 있습니다.https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=view-disable-navigation, 그러나 이것은 모든 탐색을 비활성화하는 것을 허용하지 않는 것 같습니다.

예 : 다음을 사용하는 경우에도 :

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

사용자는 마우스로지도 이동, 더블 클릭으로 확대 / 축소, 마우스 오른쪽 버튼을 사용하여지도 회전 등을 할 수 있습니다.

답변

4 DrorBogin Nov 16 2020 at 12:55

특정 이벤트에서 이벤트 전파를 중지해야하는 경우 (요청한 조건에서)지도 탐색을 완전히 비활성화하는 것 같습니다.

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

이렇게하면 해당 이벤트가 모두 중지됩니다. 마우스 오른쪽 버튼으로 클릭 또는 드래그 이벤트를 비활성화하려는 경우 (예 : 회전 만 비활성화하려는 경우) click, dragdouble-click이벤트에도 다음 과 같은 버튼 속성이 있습니다. 사용하다:

값 설명
0 왼쪽 클릭 (또는 터치)
1 중간 클릭
2 오른쪽 클릭

* 뷰 이벤트 문서에서 발췌

편집하다

Shift+Left-click+Drag확대 / 축소 비활성화에 대해 질문 한 후 문서로 돌아가이 예제를 찾았습니다.

분명히 당신은 이벤트에 눌린 키보드 키의 정의를 추가하여 이벤트가 버블 링되는 것을 막을 수 있습니다.

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

Dror의 탁월한 답변 외에도 사용자가 확대 / 축소 버튼을 사용하지 못하도록하려면 필요에 따라 제거 할 수 있는 확대 / 축소 위젯 을 만들 수 있습니다 .

ui 키워드를 사용하여 뷰를 인스턴스화 할 때 표준 확대 / 축소를 제거하고 확대 / 축소 컨트롤을 포함하지 마십시오.

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

그런 다음 필요에 따라 확대 / 축소 컨트롤을 추가 / 제거합니다.

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

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

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