ArcGIS js 4.x 添加右键菜单--笔记

一、演示效果

右键效果

二、Speak little, show code. :)

  1. Html
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
  <title>ArcGIS JavaScript Tutorials: Get map coordinates</title>
  
  <link rel="stylesheet" href="https://js.arcgis.com/4.14/esri/themes/light/main.css">
  <script src="https://js.arcgis.com/4.14/"></script>
</head>
<body>
  <div id="viewDiv"></div>
</body>
</html>
  1. Style
    html, body, #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  1. JavaScript
require(["esri/Map", "esri/views/MapView"], function (Map, MapView) {
  var map = new Map({
    basemap: "dark-gray-vector"
  });

  var view = new MapView({
    container: "viewDiv",
    map: map,
    center: [104.07, 30.67],
    zoom: 13
  });

  var rightMenu = document.createElement("div");
  rightMenu.id = "menu";
  rightMenu.className = "esri-widget esri-component";
  rightMenu.style.padding = "5px 10px 5px";
  rightMenu.style.cursor = "pointer";
  rightMenu.style.display = "none";
  rightMenu.innerHTML = "<div id='ok'>确定</div><div id='cancel'>取消</div>";
  view.ui.add(rightMenu);

  function changePosition(x, y) {
    var div = document.getElementById("menu");
    if (rightMenu.style.display === "none") {
      div.style.left = x + "px";
      div.style.top = y + "px";
    }
  }

  function toggleMenu() {
    var div = document.getElementById("menu");
    if (rightMenu.style.display === "none") {
      rightMenu.style.display = "block";
    } else {
      rightMenu.style.display = "none";
    }
  }

  view.on(["pointer-down", "pointer-move"], function (evt) {
    // 向右移五个像素,以防无法取消菜单
    changePosition(evt.x + 5, evt.y);
  });

  view.on("pointer-down", function (event) {
    view.hitTest(event).then(function (response) {
      if (response.results[0]) {
        var graphic = response.results[0].graphic;
        // 可通过graphic 的属性判断点击的类型
        // 右键
        if (event.button === 2) {
          toggleMenu();
        } 
        // 鼠标左键
        else if (event.button === 0) {
        
        }
      }
    });
  });
});

三、在线编辑地址

https://codepen.io/liutianba/pen/jOPXNez

四、相关

1. MapView 相关事件 · ArcGIS
2. webGIS 官方小示例 · ArcGIS

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 本节您将学到: 怎么加载FeatureLayer(要素图层)。应用可以可以接受和显示托管在 ArcGIS O...
    GIS猫阅读 2,537评论 3 0
  • 概述 本节您将学到: 怎么创建一个可以交互选择和显示 ArcGIS Online上底图的应用。 应用可以使用和展示...
    GIS猫阅读 448评论 0 0
  • 今天好开心。虽然天气冷得不象样,戴上棉口罩,戴上手套,还是抵挡不住冬天的亲切和寒风的抚摸。 从相家搬到晨光丽景后,...
    平常心_9886阅读 196评论 0 0
  • 在下老王阅读 157评论 0 0
  • 从nCov来袭武汉,耳朵里充斥着很多声音,从最开始的小道新闻到如今霸占央视甚至全国、全球的新闻头条,武汉,怎么...
    云林的瓜阅读 537评论 0 0

友情链接更多精彩内容