-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.js
57 lines (55 loc) · 1.7 KB
/
handler.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
'use strict';
const fs = require('fs');
const staticmaps = require('staticmaps');
const utils = require('./utils.js');
module.exports.map = (event, context, callback) => {
console.log(event);
var qs = event.queryStringParameters || {};
var lat = qs.lat || '37.7955843';
var lng = qs.lng || '-122.3934109';
var z = qs.z || '15';
lat = parseFloat(lat);
lng = parseFloat(lng);
z = parseInt(z);
var imgname = `${lat}_${lng}_${z}.png`;
console.log('imgname', imgname);
var path = `/tmp/${imgname}`;
if (!fs.existsSync(path)) {
console.log('does not exist, generating...');
var center = [ lng, lat ];
var zoom = z;
/*var map = new staticmaps({
zoom: zoom,
center: center,
options: { width: 400, height: 220 }
});*/
var map = new staticmaps({
width: 400, height: 220, zoom: zoom, center: center
});
var marker = { img: 'https://i.imgur.com/OGMRWnh.png', width: 40, height: 40, coord: center };
console.log('adding marker...');
map.addMarker(marker);
console.log('added :)');
map.render(center, zoom)
.then(() => {
console.log('saving...');
map.image.save(path)
.then(() => {
console.log('saved :)');
var imageData = fs.readFileSync(path);
setTimeout(() => {
callback(null, utils.apiBinaryResponse('image/png', imageData));
}, 1200);
})
.catch((savex) => { console.log(savex.message); console.log(savex); });
})
.catch((err) => {
console.log(`map: `, err.message);
console.log(err);
});
} else {
console.log('already exists :D');
var imageData = fs.readFileSync(path);
callback(null, utils.apiBinaryResponse('image/png', imageData));
}
};