-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
80 lines (75 loc) · 2.06 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var async = require('async.js')
var relationManager = require('./relation.js');
var wayManager = require('./way.js');
var simplification = require('./simplification');
exports.rel = function (relationIDs, epsilon) {
loadRelations(relationIDs, function (regions) {
loadWays(getWays(regions), epsilon, function (ways) {
// console.log(JSON.stringify(regions, null, ' '));
// console.log('//////////////////////////////////////////////////////////////')
console.log(
'var res=' +
JSON.stringify(
{
regions: regions,
ways: ways
},
null,
' '
)
);
});
})
}
exports.subrel = function (parentID, adminLevel, epsilon) {}
function loadRelations (relationIDs, callback) {
var regions = [];
async.forEach(
relationIDs,
function (id, callback) {
relationManager.loadByID(
id,
function (region) {
regions.push(region);
callback();
},
callback
);
},
function () {
callback(regions);
}
);
}
function getWays (regions) {
var ways = {};
regions.forEach(function (region) {
region.outer.forEach(function (wayID) {
ways[wayID] = true;
})
region.inner.forEach(function (wayID) {
ways[wayID] = true;
})
});
return Object.keys(ways);
}
function loadWays (wayIDs, epsilon, callback) {
var ways = {};
async.forEach(
wayIDs,
function (id, callback) {
wayManager.loadByID(
id,
epsilon,
function (way) {
ways[id] = way;
callback();
},
callback
);
},
function () {
callback(ways);
}
);
}