var geolib = require('geolib'); var check = require('check-types'); function setup(prefix) { return function (req, res, next) { var opts = { prefix: prefix || 'point.' }; return computeDistances(req, res, next, opts); }; } function computeDistances(req, res, next, opts) { // do nothing if no result data set if (!res || !res.data) { return next(); } if (!(check.number(req.clean[opts.prefix + 'lat']) && check.number(req.clean[opts.prefix + 'lon']))) { return next(); } var point = { latitude: req.clean[opts.prefix + 'lat'], longitude: req.clean[opts.prefix + 'lon'] }; res.data.forEach(function (place) { // the result of getDistance is in meters, so convert to kilometers place.distance = geolib.getDistance( point, { latitude: place.center_point.lat, longitude: place.center_point.lon } ) / 1000; }); next(); } module.exports = setup;