我可以让GPX轨道的颜色由与每个轨迹点,例如相关联的值来确定海拔高度或速度?

问题描述 投票:-1回答:2

我的GPX文件已经包含高程信息的每个trkpt,我可以为每个trkpt的速度扩大此。我想通过改变轨道的颜色以表示在每个trkpt仰角或速度。例如:慢是蓝色的,快速的为红色。

我怎样才能做到这一点?

这可能意味着:哪些文件和功能的OpenLayers我要改变这样做呢?

colors openlayers gpx
2个回答
0
投票

您可以尝试ol/style/FlowLineol-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;
  }
});

@+


0
投票

你应该为载体层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
});
© www.soinside.com 2019 - 2024. All rights reserved.