沿现有要素扩展LineString / MultiLineString

问题描述

我给出了两个点的坐标。我可以绘制连接这两个点的Linestring。我想要实现的是拥有一个连接点的Linestring / MultiLinestring,但它还要更长一点(比这两个点之间的距离长20%),并且仅在一个点之后扩展。

我目前所拥有的:

enter image description here

我想要实现的目标:

enter image description here

我的问题是我不知道如何找到第三个点的位置,该位置指示该行的结尾。应将其准确地沿给定距离沿现有线放置。任何一种地图投影都不重要,因为我只想拥有一条永远是直线的线。

const markerOne = new ol.Feature({
  geometry: new ol.geom.Point([-1000,-1000])
});

const markerTwo = new ol.Feature({
  geometry: new ol.geom.Point([1000,1000])
});

const linestrEnd = ?;

const linestr = new ol.Feature({
 geometry: new ol.geom.Linestring([markerOne.getGeometry().getCoordinates(),linestrEnd])
});

HERE'S WORKING FIDDLE

解决方法

最简单的方法是缩放几何图形,例如从markerOnemarkerTwo的线串增加了20%,缩放比例固定在markerOne,因此线范围超出了markerTwo

const lineStr = new ol.Feature({
 geometry: new ol.geom.LineString([markerOne.getGeometry().getCoordinates(),markerTwo.getGeometry().getCoordinates()])
});

lineStr.getGeometry().scale(1.2,1.2,markerOne.getGeometry().getCoordinates());