我希望我能在正确的地方关注我。
最近,我对自己公司的软件如何发展以使其变得更好而产生了一些想法,并在网站上注意到了基于地图的软件,该软件在地图上的点与点之间具有某种“堆积线”。我知道可以在两点之间创建一条直线,但是恕我直言,“堆积线”也是地图的不错选择。是否可以在带有openlayers的两个点之间创建这样的“多线”示例?
这是我的意思的两个示例:
我的问题不是要获得100%的答案!因此,我在这里看不到“异议”的原因……这是一个问题,如果有人以前尝试过获得类似的东西,或者是否有可能使用框架本身从OL3中创建这样的LineStrings!
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: ...
})
这个想法是为固定距离的线串的每个段计算一条平行线。我“借用”了数学以根据该答案计算平行线。
这个演示有一个小问题,您可以在第2点和第3点看到。您可以通过计算两个连续线段之间的交点来避免这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句