地图上两个点之间的堆积线(或多线?)

Dom*_*amm 4 openlayers-3

我希望我能在正确的地方关注我。

最近,我对公司软件如何发展变得更好的问题进行了一些思考,并在网站上注意到基于地图的软件,该软件在地图上的点与点之间具有某种“堆积线”。我知道可以在两点之间创建一条直线,但是恕我直言,“堆积线”也是地图的不错选择。是否可以在带有openlayers的两个点之间创建这样的“多线”示例?

这是我的意思的两个例子:

示例一的图片

示例二的图片

我的问题不是要获得100%的答案!因此,我在这里看不到“异议”的原因……这是一个问题,如果有人以前尝试过获得类似的东西,或者是否有可能使用框架本身从OL3中创建这样的LineStrings!

tsa*_*ein 5

OpenLayers不支持这种开箱即用的功能,但是它提供了自己构建这些“堆积线”的工具。

我给了它一个快速尝试,您可以在这里找到一个演示:http : //jsfiddle.net/a06ufx8z/2/

  new ol.style.Style({
    geometry: function(feature) {
        var line = feature.getGeometry();
        var coords = [];
        line.forEachSegment(function(from, to) {
            // for each segment calculate a parallel segment with a
            // distance of 4 pixels
            var angle = Math.atan2(to[1] - from[1], to[0] - from[0]);
            var dist = 4 * resolution;
            var newFrom = [
                Math.sin(angle) * dist + from[0],
                -Math.cos(angle) * dist + from[1]
            ];
            var newTo = [
                Math.sin(angle) * dist + to[0],
                -Math.cos(angle) * dist + to[1]
            ];
            coords.push(newFrom);
            coords.push(newTo);
        });

        return new ol.geom.LineString(coords);
    },
    stroke: ...
})
Run Code Online (Sandbox Code Playgroud)

这个想法是为线串的每个段计算一条固定距离的平行线。我“借用”了数学来从这个答案中计算出平行线。

这个演示有一个小问题,您可以在点2和3看到。您可以通过计算两个连续线段之间的交点来避免这种情况。