问题描述
我给出了两个点的坐标。我可以绘制连接这两个点的LineString。我想要实现的是拥有一个连接点的LineString / MultiLineString,但它还要更长一点(比这两个点之间的距离长20%),并且仅在一个点之后扩展。
我的问题是我不知道如何找到第三个点的位置,该位置指示该行的结尾。应将其准确地沿给定距离沿现有线放置。任何一种地图投影都不重要,因为我只想拥有一条永远是直线的线。
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])
});
解决方法
最简单的方法是缩放几何图形,例如从markerOne
到markerTwo
的线串增加了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());