Add support for bulk insertion to rbush wrapper

This commit is contained in:
tsauerwein
2014-10-24 14:51:46 +02:00
parent 8eaeb7bc35
commit 97acd989a2

View File

@@ -65,6 +65,36 @@ ol.structs.RBush.prototype.insert = function(extent, value) {
};
/**
* Bulk-insert values into the RBush.
* @param {Array.<ol.Extent>} extents Extents.
* @param {Array.<T>} values Values.
*/
ol.structs.RBush.prototype.load = function(extents, values) {
if (goog.DEBUG && this.readers_) {
throw new Error('Can not insert values while reading');
}
goog.asserts.assert(extents.length === values.length);
var items = [];
for (var i = 0, l = values.length; i < l; i++) {
var extent = extents[i];
var value = values[i];
var item = [
extent[0],
extent[1],
extent[2],
extent[3],
value
];
items.push(item);
goog.object.add(this.items_, goog.getUid(value).toString(), item);
}
this.rbush_.load(items);
};
/**
* Remove a value from the RBush.
* @param {T} value Value.