class SphMercProjection { constructor() { this.EARTH = 40075016.68; this.HALF_EARTH = 20037508.34; } project(lon, lat) { return [this.lonToSphMerc(lon), this.latToSphMerc(lat)]; } unproject(projected) { return [this.sphMercToLon(projected[0]), this.sphMercToLat(projected[1])]; } lonToSphMerc(lon) { return (lon / 180) * this.HALF_EARTH; } latToSphMerc(lat) { var y = Math.log(Math.tan(((90 + lat) * Math.PI) / 360)) / (Math.PI / 180); return (y * this.HALF_EARTH) / 180.0; } sphMercToLon(x) { return (x / this.HALF_EARTH) * 180.0; } sphMercToLat(y) { var lat = (y / this.HALF_EARTH) * 180.0; lat = (180 / Math.PI) * (2 * Math.atan(Math.exp((lat * Math.PI) / 180)) - Math.PI / 2); return lat; } getID() { return "epsg:3857"; } } export { SphMercProjection };