diff --git a/examples/style-rules.js b/examples/style-rules.js
index f701fca3ec..c730704afc 100644
--- a/examples/style-rules.js
+++ b/examples/style-rules.js
@@ -22,7 +22,8 @@ var style = new ol.style.Style({rules: [
new ol.style.Stroke({
color: ol.expr.parse('color'),
width: 4,
- opacity: 1
+ opacity: 1,
+ zIndex: 1
})
]
}),
diff --git a/src/ol/layer/vectorlayer.js b/src/ol/layer/vectorlayer.js
index 2201146827..9ad39644ef 100644
--- a/src/ol/layer/vectorlayer.js
+++ b/src/ol/layer/vectorlayer.js
@@ -320,6 +320,7 @@ ol.layer.Vector.prototype.groupFeaturesBySymbolizerLiteral =
}
}
}
+ featuresBySymbolizer.sort(this.sortByZIndex);
return featuresBySymbolizer;
};
@@ -454,6 +455,17 @@ ol.layer.Vector.prototype.setTemporary = function(temp) {
};
+/**
+ * Sort function for `groupFeaturesBySymbolizerLiteral`.
+ * @param {Array} a 1st item for the sort comparison.
+ * @param {Array} b 2nd item for the sort comparison.
+ * @return {number} Comparison result.
+ */
+ol.layer.Vector.prototype.sortByZIndex = function(a, b) {
+ return a[1].zIndex - b[1].zIndex;
+};
+
+
/**
* @param {Array.
} features Features.
* @return {string} Feature info.
diff --git a/test/spec/ol/layer/vectorlayer.test.js b/test/spec/ol/layer/vectorlayer.test.js
index f20b90e9da..84435a6d72 100644
--- a/test/spec/ol/layer/vectorlayer.test.js
+++ b/test/spec/ol/layer/vectorlayer.test.js
@@ -115,6 +115,34 @@ describe('ol.layer.Vector', function() {
});
+ it('sorts groups by zIndex', function() {
+ var symbolizer = new ol.style.Stroke({
+ width: 3,
+ color: '#BADA55',
+ opacity: 1,
+ zIndex: 1
+ });
+ var anotherSymbolizer = new ol.style.Stroke({
+ width: 3,
+ color: '#BADA55',
+ opacity: 1
+ });
+ var featureWithSymbolizers = new ol.Feature({
+ g: new ol.geom.LineString([[-10, -10], [-10, 10]])
+ });
+ featureWithSymbolizers.setSymbolizers([symbolizer]);
+ var anotherFeatureWithSymbolizers = new ol.Feature({
+ g: new ol.geom.LineString([[-10, 10], [-10, -10]])
+ });
+ anotherFeatureWithSymbolizers.setSymbolizers([anotherSymbolizer]);
+ features = [featureWithSymbolizers, anotherFeatureWithSymbolizers];
+
+ var groups = layer.groupFeaturesBySymbolizerLiteral(features, 1);
+ expect(groups).to.have.length(2);
+ expect(groups[0][1].zIndex).to.be(0);
+ expect(groups[1][1].zIndex).to.be(1);
+ });
+
goog.dispose(layer);
});