OL3 - ol.interaction.modify - 在拖动期间显示标签

时间:2016-01-06 18:49:10

标签: openlayers-3

在通过拖动修改特征(例如移动多边形的点)时,我想显示修改顶点的距离。我打算在地图上的正确位置使用带有一些div元素的叠加层(非常类似于度量示例:http://openlayers.org/en/v3.12.1/examples/measure.html?q=measure)。

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

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

我正在研究的一些选项:

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

对此有优雅的解决方案吗?

0 个答案:

没有答案