| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | import distance from '@turf/distance';/** * Takes a bounding box and calculates the minimum square bounding box that * would contain the input. * * @name square * @param {BBox} bbox extent in [west, south, east, north] order * @returns {BBox} a square surrounding `bbox` * @example * var bbox = [-20, -20, -15, 0]; * var squared = turf.square(bbox); * * //addToMap * var addToMap = [turf.bboxPolygon(bbox), turf.bboxPolygon(squared)] */function square(bbox) {  var west = bbox[0];  var south = bbox[1];  var east = bbox[2];  var north = bbox[3];  var horizontalDistance = distance(bbox.slice(0, 2), [east, south]);  var verticalDistance = distance(bbox.slice(0, 2), [west, north]);  if (horizontalDistance >= verticalDistance) {    var verticalMidpoint = (south + north) / 2;    return [      west,      verticalMidpoint - (east - west) / 2,      east,      verticalMidpoint + (east - west) / 2,    ];  } else {    var horizontalMidpoint = (west + east) / 2;    return [      horizontalMidpoint - (north - south) / 2,      south,      horizontalMidpoint + (north - south) / 2,      north,    ];  }}export default square;
 |