Source: toGeoJSON.js

/** ****************************************************************************************************
 * File: toGeoJSON.js
 * Project: geohash
 * @author Nick Soggin <iSkore@users.noreply.github.com> on 19-Feb-2019
 *******************************************************************************************************/
'use strict';

const
	geohashToBBox = require( './geohashToBBox' );

/**
 * toGeoJSON
 * @description
 * convert geohash to GeoJSON
 * @param {string} hash - geohash to convert
 * @param {object} opts - geojson options
 * @param {boolean} [opts.includeGeohashAsProperty=false]
 * include geohash string as a property in the GeoJSON
 * @param {boolean} [opts.includeFeatureBBox=false]
 * include bbox as a property in the GeoJSON
 * @returns {*} geohash to geojson
 */
function toGeoJSON( hash, opts = {
	includeGeohashAsProperty: false,
	includeFeatureBBox: false
} )
{
	const bbox = geohashToBBox( hash );

	const data = {
		type: 'Feature',
		properties: {},
		geometry: {
			type: 'Polygon',
			coordinates: [
				[
					[ bbox[ 0 ], bbox[ 1 ] ],
					[ bbox[ 2 ], bbox[ 1 ] ],
					[ bbox[ 2 ], bbox[ 3 ] ],
					[ bbox[ 0 ], bbox[ 3 ] ],
					[ bbox[ 0 ], bbox[ 1 ] ]
				]
			]
		}
	};

	if ( opts.includeGeohashAsProperty ) {
		data.properties.geohash = hash;
	}

	if ( opts.includeFeatureBBox ) {
		data.bbox = bbox;
	}

	return data;
}

module.exports = toGeoJSON;