geohash-cli
Version:
CLI to find as much info as possible about today's (or any date's) geohashes.
108 lines (75 loc) • 2.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _async = require('async');
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _partial = require('lodash/partial');
var _partial2 = _interopRequireDefault(_partial);
var _transform = require('lodash/transform');
var _transform2 = _interopRequireDefault(_transform);
var _assign = require('lodash/assign');
var _assign2 = _interopRequireDefault(_assign);
var _geohashMap = require('./geohashMap');
var _geohashMap2 = _interopRequireDefault(_geohashMap);
var _fillOptions = require('./fillOptions');
var _fillOptions2 = _interopRequireDefault(_fillOptions);
var _getCoordinates = require('./getCoordinates');
var _getCoordinates2 = _interopRequireDefault(_getCoordinates);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('geohash:main');
var toGeoHash = function toGeoHash() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var cb = arguments[1];
if (typeof options === 'function') {
cb = options;
options = {};
}
var _options = options,
key = _options.key;
var filledOptions = (0, _partial2.default)(_fillOptions2.default, options);
(0, _async.waterfall)([filledOptions, _getCoordinates2.default], function (err, results) {
if (err) return cb(err);
var byDate = results.byDate,
graticule = results.graticule,
location = results.location;
var milesFromLoc = function milesFromLoc(geo) {
return { distance: location.milesFrom(geo) };
};
debug('Location: ' + location);
debug('Graticule: ' + graticule);
var dates = (0, _transform2.default)(byDate, function (result, hashes, date) {
var global = hashes.global,
geohashes = hashes.geohashes;
debug('Global: ' + global);
debug('Geohashes: ' + geohashes);
var map = (0, _geohashMap2.default)({
key: key,
location: location,
geohashes: geohashes,
center: graticule.graticuleCenter().join(','),
drawGraticulePaths: true,
zoom: 7
});
var globalMap = (0, _geohashMap2.default)({
key: key,
location: location,
geohashes: [global],
center: location.toString(),
drawGraticulePaths: false,
zoom: null
});
result[date] = {
map: map,
globalMap: globalMap,
global: (0, _assign2.default)(milesFromLoc(global), global.toJSON()),
geohashes: geohashes.map(function (hash) {
return (0, _assign2.default)(milesFromLoc(hash), hash.toJSON());
})
};
});
cb(null, { dates: dates, location: location.toJSON() });
});
};
exports.default = toGeoHash;