From 95764730729847ceb5ac761cf0d8b6a5217bafa0 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sun, 24 Nov 2013 16:53:54 +0100 Subject: [PATCH] Port rtree example to ol.structs.RBush --- examples/rtree.js | 44 +++++++++++++------------------------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff --git a/examples/rtree.js b/examples/rtree.js index 743df656da..fc59d1f1d1 100644 --- a/examples/rtree.js +++ b/examples/rtree.js @@ -10,40 +10,10 @@ goog.require('ol.geom.Polygon'); goog.require('ol.layer.Vector'); goog.require('ol.shape'); goog.require('ol.source.Vector'); -goog.require('ol.structs.RTree'); goog.require('ol.style.Stroke'); goog.require('ol.style.Style'); -/** - * @return {Array.>} Extents at depths. - */ -ol.structs.RTree.prototype.getExtentsByDepth = function() { - var depthFirstSearch = - /** - * @param {ol.structs.RTreeNode} node Node. - * @param {number} depth Depth. - * @param {Array.>} result Result. - * @return {Array.>} Result. - */ - function(node, depth, result) { - if (goog.isDef(result[depth])) { - result[depth].push(node.extent); - } else { - result[depth] = [node.extent]; - } - var nodes = node.nodes; - if (goog.isDef(nodes)) { - var i, ii; - for (i = 0, ii = nodes.length; i < ii; ++i) { - depthFirstSearch(nodes[i], depth + 1, result); - } - } - return result; - }; - return depthFirstSearch(this.rootTree_, 0, []); -}; - var i, ii, j, jj; var count = 2000; @@ -77,10 +47,22 @@ for (i = 0, ii = colors.length; i < ii; ++i) { zIndex: i }); } -var extentsByDepth = vectorSource.rTree_.getExtentsByDepth(); +var extentsByDepth = []; +vectorSource.rBush_.forEachNode(function(node) { + if (node.height > 0) { + if (goog.isDef(extentsByDepth[node.height])) { + extentsByDepth[node.height].push(node.extent); + } else { + extentsByDepth[node.height] = [node.extent]; + } + } +}); var rtreeExtentFeatures = []; for (i = 0, ii = extentsByDepth.length; i < ii; ++i) { var extents = extentsByDepth[i]; + if (!goog.isDef(extents)) { + continue; + } for (j = 0, jj = extents.length; j < jj; ++j) { var extent = extents[j]; var geometry = new ol.geom.Polygon([[