【收藏】Arcgis api4.x 悬停高亮且打开popup弹窗

1.效果


2.思路

 2.1 学习高亮

  2.1.1 图层的"layerView"

layerView是用于渲染和显示地图图层的视图,它允许你控制图层的渲染方式,并且可以监听与该图层相关的事件等。

view.whenLayerView(currentLayer).then(function(layerView) {
  // layerView 是currentLayer图层的 LayerView 实例
  // currentLayer是某个图层
  console.log(layerView)
});

  2.1.2 实现高亮

实现高亮特定图层上的某个要素。highlight方法用于在图层中高亮显示特定的要素,它接受一个要素的标识符(例如 OBJECTID)或多个标识符的数组,并返回一个 Highlight 对象。

highlightSelect = LayerView.highlight(_OBJECTID);

  2.1.3 取消高亮

highlightSelect.remove();

 2.2 监听鼠标移动

事件监听器,监听地图视图 view 上的 pointer-move 事件。只有当用户移动鼠标时,这个事件会触发。e 是事件对象,包含了鼠标的位置信息等。

view.on("pointer-move", (e) => {
 console.log(e);
});

 2.3 查询图形并高亮

hitTest 是用于检测用户鼠标指向地图时,与哪些图层或要素相交的功能。include表示只检测 includeLayer 图层中的要素。

  view.hitTest(e, { include: [includeLayer] }).then((response) => {
    if (response.results.length) {
      // 查询结果
      let lastResults = response.results[response.results.length - 1];
      if (highlightSelect) {
        highlightSelect.remove();
      }
      let thisOBJECTID = lastResults.graphic.attributes.__OBJECTID;
      highlightSelect = LayerView.highlight(thisOBJECTID);
    }
  });

  2.4 打开弹窗

 view.popup.open地图上打开一个弹出窗口,location为弹窗的位置,使用hitTest检测鼠标与哪些要素相交时,当有查询结果时,在查询结果中可以取到mapPoint,可用于确定弹窗的位置。

view.popup.open({
    location: response.results[0].mapPoint,
    title: `悬停选中第${graphicID + 1}个元素`,
    content: `</br><div style="color: pink;">这是第${graphicID + 1}个元素</div>`
});

   2.5 取消所有效果

 当鼠标没有在目的图层中悬停时,取消高亮效果和关闭弹窗。

// 关闭弹窗
view.popup.visible = false;

// 取消高亮
highlightSelect.remove();

3.完整代码

https://mbd.pub/o/bread/ZpqWl5tricon-default.png?t=N7T8https://mbd.pub/o/bread/ZpqWl5tr

(如果文章对你有帮助,可以点个赞鼓励下博主噢) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WebGIS皮卡茂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值