63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
var Canvas = require('canvas');
|
|
var request = require('request');
|
|
var _ = require('underscore');
|
|
var fs = require('fs');
|
|
|
|
var torque = require('../../lib/torque/index');
|
|
|
|
|
|
function getTile(jsonRelPath, cartocss, z, x, y, step, callback) {
|
|
step = step || 0;
|
|
|
|
var cartoCssOptions = torque.common.TorqueLayer.optionsFromCartoCSS(cartocss);
|
|
|
|
var provider = new torque.providers.windshaft(_.extend({ no_fetch_map: true }, cartoCssOptions));
|
|
var rendererOptions = _.extend({cartocss: cartocss}, cartoCssOptions, {
|
|
canvasClass: Canvas,
|
|
imageClass: Canvas.Image,
|
|
setImageSrc: function(img, url, callback) {
|
|
var requestOpts = {
|
|
url: url,
|
|
method: 'GET',
|
|
encoding: null
|
|
};
|
|
request(requestOpts, function (err, response, body) {
|
|
if (!err && response.statusCode === 200) {
|
|
img.onload = function() {
|
|
callback(null);
|
|
};
|
|
img.onerror = function() {
|
|
callback(new Error('Could not load marker-file image: ' + url));
|
|
};
|
|
img.src = body;
|
|
} else {
|
|
callback(new Error('Could not load marker-file image: ' + url));
|
|
}
|
|
});
|
|
},
|
|
qualifyURL: function(url) {
|
|
return url;
|
|
},
|
|
layer: {
|
|
showLimitErros: false
|
|
}
|
|
});
|
|
|
|
var rows = JSON.parse(fs.readFileSync(__dirname + '/../fixtures/json/' + jsonRelPath));
|
|
|
|
var canvas = new Canvas(256, 256);
|
|
var pointRenderer = new torque.renderer.Point(canvas, rendererOptions);
|
|
|
|
pointRenderer.renderTile(provider.proccessTile(rows, {x: x, y: y}, z), step, function(err) {
|
|
if (err) {
|
|
return callback(err, null);
|
|
}
|
|
pointRenderer.applyFilters();
|
|
return callback(null, canvas);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
getTile: getTile
|
|
};
|