我的GPX文件已经包含高程信息的每个trkpt,我可以为每个trkpt的速度扩大此。我想通过改变轨道的颜色以表示在每个trkpt仰角或速度。例如:慢是蓝色的,快速的为红色。
我怎样才能做到这一点?
这可能意味着:哪些文件和功能的OpenLayers我要改变这样做呢?
您可以尝试ol/style/FlowLine
的ol-ext实现这一目标。
使用这种风格,你可以沿着使用函数行功能/颜色改变。这个例子说明如何:http://viglino.github.io/ol-ext/examples/style/map.style.flowline2.html。你只需要计算沿要素几何根据速度或高度变化的宽度(或颜色):
const flowStyle = new ol.style.FlowLine({
width: function(f, step) {
// calculate the with of the feature f at the given step
// step is the curvilinear abscissa between 0,1
// (0: first coordinate, 1: last one)
const width = ...
return width;
}
});
@+
你应该为载体层stylefunction去:
https://openlayers.org/en/v4.6.5/apidoc/ol.html#.StyleFunction
该功能检查要显示的向量层上的每个特征和相关的样式可以设置/编程返回。例如:
function gpxStyle(feature) {
var style = null;
if (feature.get("speed")>="100") {
style = new ol.style.Style({
image: new ol.style.Circle({
radius: 6,
stroke: new ol.style.Stroke({
color: 'red',
width: 2
}),
fill: new ol.style.Fill({
color: 'red'
})
})
});
}
else {
style = new ol.style.Style({
image: new ol.style.Circle({
radius: 6,
stroke: new ol.style.Stroke({
color: 'blue',
width: 2
}),
fill: new ol.style.Fill({
color: 'blue'
})
})
});
}
return [style];
}
var gpxLayer = new ol.layer.Vector({
source: new ol.source.Vector(),
style: gpxStyle
});