ArcGIS Maps SDK for JavaScript:鼠标进入面要素时改变鼠标指针样式,离开时恢复

文章目录

在 ArcGIS Maps SDK for JavaScript 中,可以通过监听 pointer-move 事件来检测鼠标是否进入了面要素,并且通过设置 CSS 样式来改变鼠标指针的样式。

1、关键代码

js 复制代码
// Listen for pointer-move event on the view
view.on("pointer-move", function(event) {
   // Check if the pointer is over a feature
   view.hitTest(event).then(function(response) {
     if (response.results.length && response.results[0].graphic.layer === featureLayer) {
       // Change cursor style to pointer if over a feature
       view.container.style.cursor = "pointer";
     } else {
       // Reset cursor style to default if not over a feature
       view.container.style.cursor = "default";
     }
   });
 });

2、完整示例

以下是一个简单的示例代码,演示了如何实现这一功能:

  • 创建了一个基本的地图 (map) 和地图视图 (view)。
  • 加载了一个要素图层 (featureLayer),可以根据自己的需求替换为自己的图层。
  • 监听了 pointer-move 事件,当鼠标移动时进行 hitTest 来判断是否悬停在要素上。
  • 如果鼠标悬停在要素上,则将视图容器 (view.container) 的鼠标样式 (cursor) 设置为 "pointer",表示指针样式;如果不是,则将鼠标样式设置为 "default",表示默认样式。
javascript 复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>ArcGIS JavaScript Tutorials: Change Cursor on Hover</title>
  <link rel="stylesheet" href="https://js.arcgis.com/4.25/esri/themes/light/main.css">
  <style>
    html, body, #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <script src="https://js.arcgis.com/4.25/"></script>
  <script>
    require([
      "esri/Map",
      "esri/views/MapView",
      "esri/layers/FeatureLayer",
      "dojo/domReady!"
    ], function(Map, MapView, FeatureLayer) {

      // Create a map
      var map = new Map({
        basemap: "streets-navigation-vector"
      });

      // Create a MapView
      var view = new MapView({
        container: "viewDiv",
        map: map,
        center: [-118, 34],
        zoom: 8
      });

      // Create a feature layer
      var featureLayer = new FeatureLayer({
        url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/USA_Counties/FeatureServer/0"
      });

      // Add the feature layer to the map
      map.add(featureLayer);

      // Listen for pointer-move event on the view
      view.on("pointer-move", function(event) {
        // Check if the pointer is over a feature
        view.hitTest(event).then(function(response) {
          if (response.results.length && response.results[0].graphic.layer === featureLayer) {
            // Change cursor style to pointer if over a feature
            view.container.style.cursor = "pointer";
          } else {
            // Reset cursor style to default if not over a feature
            view.container.style.cursor = "default";
          }
        });
      });

    });
  </script>
</head>
<body>
  <div id="viewDiv"></div>
</body>
</html>
相关推荐
摘星编程2 小时前
OpenHarmony + RN:Placeholder文本占位
javascript·react native·react.js
摘星编程6 小时前
React Native + OpenHarmony:Spinner旋转加载器
javascript·react native·react.js
普通网友7 小时前
新手必看!HCCDA-HarmonyOS & Cloud Apps 实验保姆级教程
javascript·angular.js
用户新7 小时前
V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
前端·javascript
Next_Tech_AI7 小时前
别用 JS 惯坏了鸿蒙
开发语言·前端·javascript·个人开发·ai编程·harmonyos
-凌凌漆-7 小时前
【vue】选项式api与组合式api
前端·javascript·vue.js
2601_949809597 小时前
flutter_for_openharmony家庭相册app实战+通知设置实现
android·javascript·flutter
可触的未来,发芽的智生8 小时前
发现:认知的普适节律 发现思维的8次迭代量子
javascript·python·神经网络·程序人生·自然语言处理
枝上棉蛮9 小时前
2026年GIS软件精选:五款工具的专业性与实用性解析
arcgis·gis·qgis·超图·gisbox·地图数据处理·gis工具
phltxy10 小时前
Vue3入门指南:从环境搭建到数据响应式,开启高效前端开发之旅
前端·javascript·vue.js