1 | 'use strict';
|
2 | var utils = require('./utils');
|
3 | var noms = require('noms').obj;
|
4 |
|
5 | module.exports = queryStream;
|
6 |
|
7 | function 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 |