Do not use Array.prototype.forEach for potentially large arrays
This commit is contained in:
@@ -95,7 +95,11 @@ ol.Collection.prototype.extend = function(arr) {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
ol.Collection.prototype.forEach = function(f, opt_this) {
|
ol.Collection.prototype.forEach = function(f, opt_this) {
|
||||||
this.array_.forEach(f, opt_this);
|
var fn = (opt_this) ? f.bind(opt_this) : f;
|
||||||
|
var array = this.array_;
|
||||||
|
for (var i = 0, ii = array.length; i < ii; ++i) {
|
||||||
|
fn(array[i], i, array);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -688,12 +688,14 @@ ol.format.WFS.writeDuringFilter_ = function(node, filter, objectStack) {
|
|||||||
ol.format.WFS.writeLogicalFilter_ = function(node, filter, objectStack) {
|
ol.format.WFS.writeLogicalFilter_ = function(node, filter, objectStack) {
|
||||||
/** @type {ol.XmlNodeStackItem} */
|
/** @type {ol.XmlNodeStackItem} */
|
||||||
var item = {node: node};
|
var item = {node: node};
|
||||||
filter.conditions.forEach(function(condition) {
|
var conditions = filter.conditions;
|
||||||
|
for (var i = 0, ii = conditions.length; i < ii; ++i) {
|
||||||
|
var condition = conditions[i];
|
||||||
ol.xml.pushSerializeAndPop(item,
|
ol.xml.pushSerializeAndPop(item,
|
||||||
ol.format.WFS.GETFEATURE_SERIALIZERS_,
|
ol.format.WFS.GETFEATURE_SERIALIZERS_,
|
||||||
ol.xml.makeSimpleNodeFactory(condition.getTagName()),
|
ol.xml.makeSimpleNodeFactory(condition.getTagName()),
|
||||||
[condition], objectStack);
|
[condition], objectStack);
|
||||||
});
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(frameState, lay
|
|||||||
feature, resolution, pixelRatio, styles, replayGroup);
|
feature, resolution, pixelRatio, styles, replayGroup);
|
||||||
this.dirty_ = this.dirty_ || dirty;
|
this.dirty_ = this.dirty_ || dirty;
|
||||||
}
|
}
|
||||||
};
|
}.bind(this);
|
||||||
if (vectorLayerRenderOrder) {
|
if (vectorLayerRenderOrder) {
|
||||||
/** @type {Array.<ol.Feature>} */
|
/** @type {Array.<ol.Feature>} */
|
||||||
var features = [];
|
var features = [];
|
||||||
@@ -331,7 +331,9 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(frameState, lay
|
|||||||
features.push(feature);
|
features.push(feature);
|
||||||
}, this);
|
}, this);
|
||||||
features.sort(vectorLayerRenderOrder);
|
features.sort(vectorLayerRenderOrder);
|
||||||
features.forEach(renderFeature, this);
|
for (var i = 0, ii = features.length; i < ii; ++i) {
|
||||||
|
renderFeature(features[i]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
vectorSource.forEachFeatureInExtent(extent, renderFeature, this);
|
vectorSource.forEachFeatureInExtent(extent, renderFeature, this);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user