获取一段已单击的折线

注入

在我的应用程序中,我有:

<MapContainer {...opts} scrollWheelZoom>
  <>..</>
  <Polyline eventHandlers={{ click: e => { console.log('line clicked', e.sourceTarget) }, }} positions={positonArrat}/>}
</MapContainer>

每条折线由N个直线部分组成。

不使用火箭科学,如何获得被点击的折线段

另一种选择是用多条线替换一条多段线,以便每次单击都可以得到一个结果,但是开箱即用的解决方案将是不错的...

注入

我最终使用了简单的数学运算,onClick函数如下所示:

const TOLERANCE = 3

onPolylineClick = e => {
  const { x, y } = e.layerPoint
  const parts = e.target._parts[ 0 ] // some undocumented shit
  let prev = parts[ 0 ]
  const section = parts.slice( 1, parts.length ).findIndex( p => {
    try{
      // check if in bounds
      if( !( Math.min( prev.x, p.x ) <= x <= Math.max( prev.x, p.x ) && 
             Math.min( prev.y, p.y ) <= y <= Math.max( prev.y, p.y ) ) ) return false
      const yCalc = ( x - prev.x ) * ( p.y - prev.y ) / ( p.x - prev.x ) + prev.y
      return Math.abs( y - yCalc ) < TOLERANCE
    }finally{
      prev = p
    }
  })
  this.setState( { selectedSection:section } )
}

它在中设置匹配部分的第一个点的索引state

然后,为了可视化所选部分,我在顶部显示了一个2点的橙色折线:

<MapContainer {...opts} scrollWheelZoom>

  <Polyline eventHandlers={{ click:this.onPolylineClick }} positions={points} />}
  
  {-1 !== selectedSection && 
     <Polyline color="orange" positions={points.slice( selectedSection, selectedSection + 2 )}/>}

</MapContainer>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在php中单击按钮时触发一段代码

来自分类Dev

MySQL:提取折线图数据以显示一段时间内的计数

来自分类Dev

在JavaScript中获取URL的最后一段

来自分类Dev

在JavaScript中获取URL的最后一段

来自分类Dev

如何获取被单击元素的类值并使用此值在jQuery中此类的最后一次出现之后放置一段html代码

来自分类Dev

如何获取被单击元素的类值并使用此值在jQuery中此类的最后一次出现之后放置一段html代码

来自分类Dev

删除一段文字

来自分类Dev

延迟一段代码

来自分类Dev

单击按钮后,单击“显示弹出窗口一段时间”,然后单击“重定向页面”-ASP.NET

来自分类Dev

如何在Android中等待按钮单击一段时间

来自分类Dev

如果用户未单击任何按钮,如何在一段时间后关闭NSAlert

来自分类Dev

单击提交后需要一段时间的操作后操作DOM

来自分类Dev

检查按钮是否保持持续一段时间或是否只是单击 ANDROID

来自分类Dev

如何在PHP中获取没有GET变量的URL的最后一段?

来自分类Dev

使用DatePeriod和DateInterval获取一段时间内的某些工作日

来自分类Dev

获取经过一段时间(DateTime)的年,月,日

来自分类Dev

如何获取当前窗口URI的最后一段

来自分类Dev

twilio获取小于1天的一段时间内的邮件列表

来自分类Dev

WooCommerce-在一段时间内按用户获取完成的状态订单

来自分类Dev

在C ++中使用curl获取一段时间后更改的页面

来自分类Dev

正则表达式,仅从URL的最后一段中获取单词

来自分类Dev

无法运行一段代码从C中的用户那里获取不同类型的数据

来自分类Dev

一段时间后获取std :: bad_alloc

来自分类Dev

如何获取没有PHP中的GET变量的URL的最后一段?

来自分类Dev

在使用OR条件的情况下获取路径的最后一段

来自分类Dev

获取一段时间内的平均值

来自分类Dev

使用 Jsoup 获取维基百科文章的第一段

来自分类Dev

获取502时如何暂停发送请求Jmeter一段时间

来自分类Dev

获取一段时间内在 C++ 中创建的文件路径列表

Related 相关文章

  1. 1

    在php中单击按钮时触发一段代码

  2. 2

    MySQL:提取折线图数据以显示一段时间内的计数

  3. 3

    在JavaScript中获取URL的最后一段

  4. 4

    在JavaScript中获取URL的最后一段

  5. 5

    如何获取被单击元素的类值并使用此值在jQuery中此类的最后一次出现之后放置一段html代码

  6. 6

    如何获取被单击元素的类值并使用此值在jQuery中此类的最后一次出现之后放置一段html代码

  7. 7

    删除一段文字

  8. 8

    延迟一段代码

  9. 9

    单击按钮后,单击“显示弹出窗口一段时间”,然后单击“重定向页面”-ASP.NET

  10. 10

    如何在Android中等待按钮单击一段时间

  11. 11

    如果用户未单击任何按钮,如何在一段时间后关闭NSAlert

  12. 12

    单击提交后需要一段时间的操作后操作DOM

  13. 13

    检查按钮是否保持持续一段时间或是否只是单击 ANDROID

  14. 14

    如何在PHP中获取没有GET变量的URL的最后一段?

  15. 15

    使用DatePeriod和DateInterval获取一段时间内的某些工作日

  16. 16

    获取经过一段时间(DateTime)的年,月,日

  17. 17

    如何获取当前窗口URI的最后一段

  18. 18

    twilio获取小于1天的一段时间内的邮件列表

  19. 19

    WooCommerce-在一段时间内按用户获取完成的状态订单

  20. 20

    在C ++中使用curl获取一段时间后更改的页面

  21. 21

    正则表达式,仅从URL的最后一段中获取单词

  22. 22

    无法运行一段代码从C中的用户那里获取不同类型的数据

  23. 23

    一段时间后获取std :: bad_alloc

  24. 24

    如何获取没有PHP中的GET变量的URL的最后一段?

  25. 25

    在使用OR条件的情况下获取路径的最后一段

  26. 26

    获取一段时间内的平均值

  27. 27

    使用 Jsoup 获取维基百科文章的第一段

  28. 28

    获取502时如何暂停发送请求Jmeter一段时间

  29. 29

    获取一段时间内在 C++ 中创建的文件路径列表

热门标签

归档