【问题标题】:Extending LineString/MultiLineString along existing Feature沿现有要素扩展 LineString/MultiLineString
【发布时间】:2020-12-09 21:54:48
【问题描述】:

我已经给出了两点的坐标。我可以绘制一个连接这两点的 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])
});

HERE'S WORKING FIDDLE

【问题讨论】:

    标签: javascript openlayers openlayers-6


    【解决方案1】:

    最简单的方法是缩放几何图形,例如从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());
    

    【讨论】:

    • 这是我用例的完美答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2019-03-07
    • 2023-03-09
    • 1970-01-01
    • 2021-11-25
    • 2011-01-22
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多