import { BoundingBox, Coordinates } from "@wemap/geo"; export const defaultBounds = new BoundingBox( new Coordinates(85, 170), new Coordinates(-85, -170) ); export const correctBounds = (bounds: BoundingBox) => { const southWest = bounds.getSouthWest(); const northEast = bounds.getNorthEast(); const south = southWest.lat; let west = southWest.lng; const north = northEast.lat; const east = northEast.lng; // If bounding box cross the meridian // e.g. west longitude 177 become -183 const crossMeridian = west > east; if (crossMeridian) { west = -(180 - west + 180); } const northEastCorrected = new Coordinates(0, 0); northEastCorrected.autoWrap = false; northEastCorrected.lat = north; northEastCorrected.lng = east; const southWestCorrected = new Coordinates(0, 0); southWestCorrected.autoWrap = false; southWestCorrected.lat = south; southWestCorrected.lng = west; return new BoundingBox(northEastCorrected, southWestCorrected); }; export const deltaToBounds = (coords?: { latitude: number; longitude: number; latitude_delta: number; longitude_delta: number; } | null) => { if (!coords) { return defaultBounds; } const southWest = new Coordinates( Number(coords.latitude) - Number(coords.latitude_delta), Number(coords.longitude) - Number(coords.longitude_delta) ); const northEast = new Coordinates( Number(coords.latitude) + Number(coords.latitude_delta), Number(coords.longitude) + Number(coords.longitude_delta) ); return correctBounds(new BoundingBox(northEast, southWest)); };