ArcGIS Server JavaScript API v4.x'te harita navigasyonu nasıl devre dışı bırakılır

Nov 16 2020

ArcGIS Sunucu JavaScript API eski sürüm 3.x, bu mümkündü devre dışı harita navigasyon kullanarak disableMapNavigation()açıklandığı gibi JavaScript için ArcGIS API devre dışı bırakılıyor haritası

ArcGIS Server JavaScript API 4.x sürümünde harita navigasyonunu devre dışı bırakmanın eşdeğeri nedir? Kullanım durumu, harici bir sorgu çalışırken harita navigasyonunu geçici olarak engellemektir.

MapView, aşağıdaki örnekte olduğu gibi belirli navigasyon türlerinin devre dışı bırakılmasına izin veren bir navigasyon özelliğine sahiptir.https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=view-disable-navigation, ancak bu, tüm gezinmenin devre dışı bırakılmasına izin vermiyor gibi görünüyor.

Örneğin, kullanırken bile:

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

kullanıcı haritayı fare ile kaydırabilir, çift tıklayarak yakınlaştırabilir, sağ fare düğmesini kullanarak haritayı döndürebilir, vb.

Yanıtlar

4 DrorBogin Nov 16 2020 at 12:55

Harita navigasyonunu tamamen devre dışı bırakıyor gibi görünüyor (sorduğunuz gibi bir koşul altında) belirli olaylardan olay yayılmasını durdurmanız gerekir.

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

Bu, bir tıklama veya sürükleme olayını yalnızca sağ fare düğmesinden devre dışı bırakmak istiyorsanız (örneğin, yalnızca döndürmeyi devre dışı bırakmak isterseniz), tüm bu olayları durdurur click, dragve double-clickolayları ayrıca, yapabileceğiniz bir düğme özelliğine de sahiptir. kullanım:

Değer Açıklama
0 sol tıklama (veya dokunma)
1 orta tıklama
2 sağ tıklama

* Görünüm olay belgelerinden alınmıştır

DÜZENLE

Shift+Left-click+DragYakınlaştırmayı devre dışı bırakmayı da sorduktan sonra , dokümanlara geri döndüm ve bu örneği buldum

Görünüşe göre olayın köpürmesini durdurmak için basılan klavye tuşunun tanımını olaya ekleyebilirsiniz.

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'un mükemmel cevabına ek olarak, kullanıcının Yakınlaştır / Uzaklaştır düğmelerini kullanmasını önlemek için, gerektiğinde kaldırılabilen bir Yakınlaştırma aracı oluşturabilirsiniz.

Görünümü ui anahtar sözcüğünü kullanarak somutlaştırırken standart Yakınlaştırmayı kaldırın ve Yakınlaştırma denetimini dahil etmeyin:

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

Ardından, gerektiği gibi bir Yakınlaştırma denetimi ekleyin / kaldırın:

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

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

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