单击时如何 select 来自 leafletjs 多段线的单行?

How to select a single line from a leafletjs polyline when clicked?

我有一张传单地图(使用 Vue 和 vue2-leaflet),其中包含许多预定义节点和它们之间的连接(存储在 neo4j 数据库中)。当用户单击一个节点(实际上是@mouseup)时,它的所有连接都显示为折线。我希望能够单击地图上的任何这些连接(线)并对其进行操作,例如删除(会有一个弹出窗口或带有操作的东西,但这在这里并不重要)。

我遇到的问题是点击事件没有记录连接 ID(或任何可以识别实际点击了哪个连接的信息)。我当然可以为每个连接创建一个多段线,但我怀疑问题会持续存在,并且在我的情况下这不是一个真正的解决方案,因为我不知道每个节点有多少个连接,并且 v-for 不知道'似乎无法使用多段线(至少我无法使其工作)。

这是节点标记代码:

<l-marker v-for="mapNode in MapStore.mapNodes"
  @mouseup="nodeClick($event, mapNode.index)"
  :lat-lng="[mapNode.latLng.lat, mapNode.latLng.lng]"
  :key="mapNode.index"
</l-marker>

...这是折线代码:

<l-polyline
  @mouseup="connectionClick($event)"
  :lat-lngs="MapStore.selectedConnections.latlngs"
/>

nodeClick 函数正确填充 MapStore.selectedConnections,因为多段线按预期显示。

问题是我没有看到任何传递给 connectionClick 函数的东西可以识别单击了哪个连接,因此我可以使用它。

这可能吗?

好的,事实证明我错了,v-for 有效(我认为我的代码有问题,但我不确定是什么)。

我的解决方案是:

<l-polyline v-for="connection in MapStore.selectedConnections.latlngs"
  @mouseup="connectionClick($event, connection)"
  :lat-lngs="connection" />

通过这种方式迭代连接,为每个连接生成一条单独的多段线,并将单击的连接的 latlngs 传递给 connectionClick 函数。