Openlayers 3 OL3-ol.interaction.modify-在拖动过程中显示标签

Openlayers 3 OL3-ol.interaction.modify-在拖动过程中显示标签,openlayers-3,Openlayers 3,通过拖动修改特征时(例如,移动多边形的一个点),我想显示修改顶点的距离。我打算在地图上的适当位置使用一些div元素的覆盖(很像度量示例:) 我认为这需要附加到适当的事件(modifystart、modifyend、change:geometry等),并能够确定要修改的顶点。对于每个顶点/线段,我可以在地图上放置这样的标签 我想知道实现这一点的最佳方法是什么(主要是确定要修改哪些顶点)?这似乎很难实现 我正在调查的一些选择: 最简单的方法是访问修改交互的dragSegments成员。遗憾的是,这

通过拖动修改特征时(例如,移动多边形的一个点),我想显示修改顶点的距离。我打算在地图上的适当位置使用一些div元素的覆盖(很像度量示例:)

我认为这需要附加到适当的事件(modifystart、modifyend、change:geometry等),并能够确定要修改的顶点。对于每个顶点/线段,我可以在地图上放置这样的标签

我想知道实现这一点的最佳方法是什么(主要是确定要修改哪些顶点)?这似乎很难实现

我正在调查的一些选择:

  • 最简单的方法是访问修改交互的dragSegments成员。遗憾的是,这似乎没有从API中暴露出来。例如,如果存在某个包含此dragSegments_uuu集合的modifydrag事件,那就更好了。或者这已经是现有ModifyEvent的成员(不确定在引发modifystart事件时,是否已填写此dragSegments_uuu集合)
  • 我知道我可以收听modifystart和modifyend事件。这有一个mapBrowserPointerEvent成员,我可以用它来知道鼠标光标的坐标。但是,在这种情况下,我必须编写一些逻辑来查找所有与该坐标匹配的线段,以及正在修改的特征。因此,事实上,我正在重写与用于确定dragSegments_uu集合的修改交互相同的代码。然后我必须希望最终得到与内部dragSegments相同的集合(并在未来的OL3代码更改中保持最新)
  • 我还可以听到正在修改的特征的变化:几何事件。在这种情况下,我必须扫描新的几何体,并将每个点与原始版本进行比较(在修改开始时存储副本),然后查看哪些坐标发生了更改。不确定这是一种多么好的方法(乍一看,扫描所有的点并进行一对一的比较看起来很难看)

有没有优雅的解决方案?

请看。您可以使用handleDownEvent检测特征,使用handleDragEvent访问dragCoordinate并查找delta以平移几何体。感谢您的提示。现在,当我创建ol.interaction.Pointer的实例并处理这些事件时,我仍然需要编写代码来确定要修改的段。也就是说,我有拖曳坐标,但我仍然必须确定哪些特征的哪些部分对应于该坐标。因此,我仍然试图提出我自己的dragSegments_uu收藏。虽然我同意使用它,但它比附加到“更改:几何体”要容易一点。所以我认为你的暗示已经是一个进步。