UNPKG

843 BJavaScriptView Raw
1'use strict';
2var utils = require('./utils');
3var noms = require('noms').obj;
4
5module.exports = queryStream;
6
7function queryStream(self, bbox) {
8 var store = self.store;
9 var queue = [];
10 if (self.root) {
11 queue.push(self.root);
12 }
13 return noms(function (done) {
14 var self = this;
15 if (!queue.length) {
16 return self.push(null);
17 }
18
19 store.get(queue.pop()).then(function getNode(node) {
20 var i = -1;
21 var len = node.children.length;
22 var child;
23 while (++i < len) {
24 child = node.children[i];
25 if (utils.intersects(child.bbox, bbox)) {
26 if (child.leaf) {
27 self.push({
28 id: child.id,
29 bbox: child.bbox
30 });
31 } else {
32 queue.push(child.id);
33 }
34 }
35 }
36 done();
37 }, done);
38 });
39}
\No newline at end of file