如果单击画布图形中的标签,如何获取被单击的标签

时间:2019-06-26 17:02:27

标签: javascript angular

enter image description here我试图单击多边形的一角,然后记录我单击的标签。 我在单击的画布上附加了一个事件侦听器,然后记录了坐标,但是它们与绘图时的坐标不完全相同,因此如何在单击时获取交点(即标签)。

到目前为止我的代码

 subprocess.call(["...",name])

online editor link

1 个答案:

答案 0 :(得分:2)

您可以通过一点数学来做到这一点:

intersect(point, coord) {
     return Math.sqrt((point.x-coord.x) ** 2 + (point.y - coord.y) ** 2) < 10; //where 10 = your circle radius
}

onclick(e: MouseEvent){
    const pos = {
      x: e.layerX,
      y: e.layerY
    };

    this.coordinates.forEach(coord => {
      if (this.intersect(pos, coord)) {
        alert('clicked: ' + coord.label);
      }
    })
  }

Stack Blitz Demo