Есть ли вообще возможность указать z-порядок объекта на одном слое?


Я использую один слой с тремя объектами и хотел бы указать z-порядок, но все равно не работает.

В соответствии с моим пониманием функция рисует в том же порядке, в котором я добавляю, поэтому я попытался добавить в обратном порядке, но это не сработало для меня.

Код для добавления функции

var features=[];
jQuery.each(data.route, function (key, val) 
{
  var localfeature = new ol.Feature({ geometry: objGeoJSON.readGeometry(JSON.parse(val.simpleRoute)).transform('EPSG:4326', 'EPSG:3857') });
  localfeature.set("rtype", "R" + (key + 1));
  features.push(localfeature);
});
currentRoute.routingSource.addFeatures(features);

Функция стиля слоя

//function to apply color based on rtype attribute.
function styleFunction(feature, resolution) {
  var level = feature.get('rtype');
  if (!level || !RouteType[level]) {
    return [defaultStyle];
  }
  if (!styleCache[level]) {
    styleCache[level] = new ol.style.Style({
      stroke: new ol.style.Stroke({
        color: RouteType[level],
        width: 4
      })
    });
  }
  // at this point, the style for the current level is in the cache
  // so return it (as an array!)
  return [styleCache[level]];
}
1 3

1 ответ:

Наконец-то я получил решение, вот конечная функция стиля, которая будет переставлять Z-индекс объекта.

`

    //function to apply color based on rtype attribute.
    function styleFunction(feature, resolution) {
      var level = feature.get('rtype');
      if (!level || !RouteType[level]) {
        return [defaultStyle];
      }
      if (!styleCache[level]) {
        styleCache[level] = new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: RouteType[level],
            width: 4
          }),
          zIndex: zIndexValue
        });
      }
  // at this point, the style for the current level is in the cache
  // so return it (as an array!)
  return [styleCache[level]];
}`

Вы можете проверить пример здесь http://bl.ocks.org/wboykinm/cc509eb2763ca1ba9293