UNPKG

geolib

Version:

Library to provide basic geospatial operations like distance calculation, decoding of sexagesimal coordinates etc.

1 lines 1.57 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _getLatitude=_interopRequireDefault(require("./getLatitude"));var _getLongitude=_interopRequireDefault(require("./getLongitude"));var _toRad=_interopRequireDefault(require("./toRad"));var _toDeg=_interopRequireDefault(require("./toDeg"));var _constants=require("./constants");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getBoundsOfDistance=(point,distance)=>{const latitude=(0,_getLatitude.default)(point);const longitude=(0,_getLongitude.default)(point);const radLat=(0,_toRad.default)(latitude);const radLon=(0,_toRad.default)(longitude);const radDist=distance/_constants.earthRadius;let minLat=radLat-radDist;let maxLat=radLat+radDist;const MAX_LAT_RAD=(0,_toRad.default)(_constants.MAXLAT);const MIN_LAT_RAD=(0,_toRad.default)(_constants.MINLAT);const MAX_LON_RAD=(0,_toRad.default)(_constants.MAXLON);const MIN_LON_RAD=(0,_toRad.default)(_constants.MINLON);let minLon;let maxLon;if(minLat>MIN_LAT_RAD&&maxLat<MAX_LAT_RAD){const deltaLon=Math.asin(Math.sin(radDist)/Math.cos(radLat));minLon=radLon-deltaLon;if(minLon<MIN_LON_RAD){minLon+=Math.PI*2}maxLon=radLon+deltaLon;if(maxLon>MAX_LON_RAD){maxLon-=Math.PI*2}}else{minLat=Math.max(minLat,MIN_LAT_RAD);maxLat=Math.min(maxLat,MAX_LAT_RAD);minLon=MIN_LON_RAD;maxLon=MAX_LON_RAD}return[{latitude:(0,_toDeg.default)(minLat),longitude:(0,_toDeg.default)(minLon)},{latitude:(0,_toDeg.default)(maxLat),longitude:(0,_toDeg.default)(maxLon)}]};var _default=exports.default=getBoundsOfDistance;