显示基于lineString的区域封面

时间:2015-06-14 18:13:30

标签: openlayers-3

我要做的是显示某人所覆盖的区域。例如,一个搜索团队走过一个领域,一个人可以看到大约50米。所以我想要显示一个宽度为100米的多边形和已经走过的路径的长度。我需要以图形和面积测量方式显示它。

我必须实现这个的最好的想法是创建一个线串,然后通过某种方式将点从A点的线设置为点B,从而创建一个多边形。这样的事情:

         |                 |
         |                 |
Point A  +-----------------+ Point B
         |                 |
         |                 |

但是,我不知道如何从线上获取角度以找到创建多边形的坐标。有谁知道这样做的方法?

2 个答案:

答案 0 :(得分:1)

我最终找到了解决方案。基本上你需要使用ol.geom.Polygon.fromCircle。如果将点数设置为2,它将为您提供一条水平线,您可以将其旋转到标题方向。

var theCircle = new ol.geom.Circle(theMarker.getCoordinates(), Radius);
var polyCircle = new ol.geom.Polygon.fromCircle(theCircle, 2, heading);
var polyCircleCoords = polyCircle.getCoordinates();

答案 1 :(得分:0)

看看this example

我使用此函数生成坐标:

function rotate(xCoord, yCoord, angle, length) {
    length = typeof length !== 'undefined' ? length : 10;
    angle = angle * Math.PI / 180; // if you're using degrees instead of radians
    return [
        length * Math.cos(angle) + xCoord, 
        length * Math.sin(angle) + yCoord
    ];
}