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
|
define.class(function(require, $server$, service){
var BufferGen = require("$widgets/map/mapbuffers")();
this.generatebuffer = function(targetfile, datastring){
try{
var thedata = JSON.parse(datastring);
var targetobj = {}
}
catch(e){
console.log("exception during bugger generation:", e)
}
}
this.sessionstart = function(){
console.log("[Map] Session started");
}
this.cachemap = define.classPath(this) + "../../../cache/map/"
this.grabmap = function(x,y,z){
var nodehttp = require('$system/server/nodehttp');
var fs = require('fs');
try{
fs.mkdirSync(define.expandVariables(this.cachemap))
}catch(e){}
var cachedname = define.expandVariables(this.cachemap + x +"_"+y+"_" + z+".json");
if (fs.existsSync(cachedname)){
var data = fs.readFileSync(cachedname).toString();
return data;
console.log("[Map] Cached slice has an error... loading again");
}
console.log("[Map] Downloading from mapzen:",x,y,z,"..." );
var fileurl = "http://vector.mapzen.com/osm/all/"+z+"/"+x+"/"+y+".topojson?api_key=vector-tiles-Qpvj7U4"
var P = define.deferPromise()
nodehttp.get(fileurl).then(function(data){
try{
var thedata = JSON.parse(data);
fs.writeFileSync(cachedname, data);
console.log(" -- done. Saved to cache: ",x,y,z,"!", cachedname);
P.resolve(data);
}
catch(e){
console.log("Mapzen returned error:" , e);
}
P.resolve("{}");
})
return P;
}
})
|