在使用OpenLayers 4.5.0的JavaScript应用程序中,我在地图中有一个线串和一个点。该点位于线串“上”。
现在,我想将点移动到线串上的另一个位置,同时在给定时间段内沿着线放置动画。
这是我所拥有的信息,即我正在使用的信息:
我也很清楚如何实现动画。我不知道的是如何在制作动画的同时获得该线的位置。
我知道方法ol.geom.LineString.prototype.getCoordinateAt
,它允许你获得给定分数的线串的坐标。我认为我需要的是相反的:我有坐标。 我需要开头和结尾的分数。如果我有那些,我将能够在动画时计算两者之间的分数。
有没有办法用OpenLayers来实现这个目标?
这是一张代表我想要做的事情的照片。下面有更多解释。
如果我知道有问题的线串的2个分数(开头和结尾的那些分数),那么我可以在动画时检索分数。例如,如果我知道开头是0.2并且结束0.8,那么我知道如果我在动画中有10%,那么我需要将我的观点显示为0.26。
我希望这有助于理解我想要做的事情。
答案 0 :(得分:0)
我已经能够使用 ol-ext 库完成我需要做的事情,更具体地说是使用splitAt方法。这是我使用的配方:
首先,对于我所拥有的每一个协调,我必须确保它们“捕捉”到该线。我是在OpenLayers中使用getClosestPoint方法完成的,如下所示:
// Get "closest" start and end coordinates for segment computing
var closestStartCoordinate = lineString.getClosestPoint(startCoordinate);
var closestEndCoordinate = lineString.getClosestPoint(endCoordinate);
然后,如果我使用 splitAt 方法,我会得到多个段。我需要的是起始坐标等于closestStartCoordinate
且结束坐标等于closestEndCoordinate
的那个。
就是这样!我有我的片段。当动画正在进行中时,我可以使用段中的getCoordinateAt方法,具体取决于动画的运行时间,以便在我的点移动过程中获取位置。
感谢@pavlos指出这一点。感谢ol-ext库的作者!