首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >记mapboxGL实现鼠标经过高亮时的一个问题

记mapboxGL实现鼠标经过高亮时的一个问题

作者头像
牛老师讲GIS
发布2024-12-30 10:35:40
发布2024-12-30 10:35:40
3130
举报

概述

mapboxGL实现鼠标经过高亮可通过注册图层的mousemovemoveout事件来实现,在mousemove事件中可以拿到当前经过的要素,但是当使用该要素时,发现在某个地图级别下会有线和面数据展示不全的情况。究其原因,发现是mapboxGL在绘图的时候为提升效率也会进行切片,所以图层事件返回的要素时切片后的,当数据范围比较大、地图级别比较大的时候,必然会分成多块。

表现

实际情况
实际情况
期望结果
期望结果

实现

代码语言:javascript
复制
fetch('/data/999999.geojson')
  .then(res => res.json()).then(res => {
    const adminFeatures = res.features
    map.on("mousemove", "admin-boundry-fill", (e) => {
      // const feature = e.features[0]  // 此种方式会有图形不完整的情况
      const adcode = e.features[0].properties.adcode;
      const feature = adminFeatures.find(
         (d) => d.properties.adcode === adcode
       );
      map.getSource("admin-boundry-h").setData(feature);
      map.getCanvasContainer().style.cursor = "pointer";
    });
    map.on("mouseout", "admin-boundry-fill", (e) => {
      map.getSource("admin-boundry-h").setData(new Geojson());
      map.getCanvasContainer().style.cursor = "default";
    });
  })
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 表现
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档