Есть ли вообще возможность указать 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 ответ:
Наконец-то я получил решение, вот конечная функция стиля, которая будет переставлять 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