All files / geonet-geohash/src toGeoJSON.js

100% Statements 9/9
100% Branches 5/5
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59                1x                                     1428x   1428x                                 1428x 562x     1428x 561x     1428x     1x  
/** ****************************************************************************************************
 * 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;