沿现有要素扩展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());

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...