高德地图多边形编辑过程中获取编辑点的索引问题

发布于 2022-09-11 19:21:23 字数 638 浏览 18 评论 0

由于PolyEditor没有相关编辑多边形过程中获取编辑点的索引的api,所以用了以下思路:
编辑过程中获取鼠标的坐标的xy,根据高德地图提供的containerToLngLat转换成地图实际坐标,
多边形编辑过程中会触发多边形的change事件,在该事件中监听获取实时多边形的path
循环path,根据AMap.GeometryUtil.distance获取到鼠标地图坐标和多边形每个点坐标的距离,
从而获取到最小的一个距离,即当前编辑的点。
思路应该是对的吧,但是获取到的索引有时对有时是错的,如果快速移动,获取到的索引确实正确的,如下图所示:
高德地图多边形编辑过程中获取编辑点的索引问题

示例代码:https://codepen.io/anon/pen/W...
有没有熟悉高德地图的解答下,感激。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人间☆小暴躁 2022-09-18 19:21:23

换了一种思路解决了,既然是拖动多边形的某点点,其他的点的坐标肯定不变的,只有被拖动的点的坐标的变的,做下判断就知道是哪个点了。
Demo:https://codepen.io/anon/pen/b...
预览:
5cbed51ba54fa.gif

烟雨扶苏 2022-09-18 19:21:23

把你的minIndex变量定义在polygonchange事件作用域外部。

let minIndex = 0;
    polygon.on('change', function(ev) {
      let minPoint = path[0];
      //获取移动点的索引
      path.forEach((item, index) => {
        var distance = AMap.GeometryUtil.distance(item, mousePosition);
        var minSistance = AMap.GeometryUtil.distance(minPoint, mousePosition);
        if (distance < minSistance) {
          minPoint = item;
          minIndex = index;
        }
      })
      console.log('编辑点索引:',minIndex);
    })
    

polygon.on('change', function(ev) {
  let minPoint = path[0];
  let minIndex = 0;
  //获取移动点的索引
  path.forEach((item, index) => {
    var distance = AMap.GeometryUtil.distance(item, mousePosition);
    var minSistance = AMap.GeometryUtil.distance(minPoint, mousePosition);
    if (distance < minSistance) {
      minPoint = item;
      minIndex = index;
    }
  })
  console.log('编辑点索引:',minIndex);
})   

这两者是有区别的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文