'use strict'; /* global mapboxgl:false */ var fs = require('fs'); var gui = require('nw.gui'); var turf = require('turf'); var CREDS = require('./creds.json'); var PNG = 'output.png'; var LOG = 'log.txt'; var DELAY = 2000; mapboxgl.accessToken = CREDS.accessToken; var opts = { // container id container: 'map', // stylesheet location style: 'mapbox://styles/mapbox/light-v9', // starting position center: [-73.6, 45.50], // starting zoom zoom: 12, // required for image exports preserveDrawingBuffer: true }; var geojson = turf.point([-73.6, 45.50]); // main plot(opts, geojson) .then(exportImage) .then(quit); function plot(opts, geojson) { return new Promise(function(resolve, reject) { var map = new mapboxgl.Map(opts); map.on('load', function() { drawData(map, geojson); resolve(map); }); }); } function drawData(map, geojson) { map.addSource('source', { type: 'geojson', data: geojson }); map.addLayer({ id: 'layer', source: 'source', type: 'circle' }); } function exportImage(map) { return new Promise(function(resolve, reject) { setTimeout(function() { var dataURL = map.getCanvas().toDataURL(); var imgData = dataURL.replace(/^data:image\/\w+;base64,/, ''); var img = new Buffer(imgData, 'base64'); fs.writeFile(PNG, img, function(err) { if(err) reject(err); resolve('success'); }); }, DELAY); }); } function quit(result) { var str = [ result, 'mapbox-gl version: ' + mapboxgl.version, 'nw.js version: ' + (process.versions['nw'] || process.versions['node-webkit']), 'node.js version: ' + process.version, 'chromium version: ' + process.versions['chromium'], '' ].join('\n'); fs.writeFile(LOG, str, function(err) { if(err) throw err; gui.App.quit(); }); }