arcgis for javascript4.x 屏蔽掉地图的默认事件及默认控件

屏蔽地图默认事件

原理是通过设置view的监听,然后在相应事件触发时候阻止事件冒泡,我们可以添加一个内部状态curentState来设置是否启用禁止默认事件效果。

//禁止默认事件
DisableInteraction(view) {
  let curentState = true; //禁止通过键盘+-缩放地图

  view.on("key-down", function (event) {
    var prohibitedKeys = ["+", "-", "Shift", "_", "="];
    var keyPressed = event.key;

    if (prohibitedKeys.indexOf(keyPressed) !== -1) {
      if (curentState) event.stopPropagation();
    }
  }); //禁止滚轮缩放地图

  view.on("mouse-wheel", function (event) {
    if (curentState) {
      event.stopPropagation();
    }
  }); //禁止双击放大

  view.on("double-click", function (event) {
    if (curentState) event.stopPropagation();
  }); //禁止Ctrl+双击缩小

  view.on("double-click", ["Control"], function (event) {
    if (curentState) event.stopPropagation();
  }); //禁止移动地图

  view.on("drag", function (event) {
    if (curentState) event.stopPropagation();
  }); // 禁止通过上下左右箭头移动地图

  view.on("key-down", function (event) {
    // prevents panning with the arrow keys

    var keyPressed = event.key;

    if (keyPressed.slice(0, 5) === "Arrow") {
      if (curentState) event.stopPropagation();
    }
  }); //禁止Shift+拖拽拉框放大

  view.on("drag", ["Shift"], function (event) {
    if (curentState) event.stopPropagation();
  }); //禁止Shift+Ctrl+拖拽拉框缩小

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

  return function (state) {
    curentState = state;
};

屏蔽自带控件

arcgis for js自带控件DOM基本上都写在view.ul模块中,设置为空便可以清空所有默认控件

view.ui.components = [];

转载自https://www.jianshu.com/p/9a64a12162b2

posted @   槑孒  阅读(314)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示