37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
/* *
|
|
* Web Mercator projection, used for most online map tile services
|
|
* */
|
|
'use strict';
|
|
var maxLatitude = 85.0511287798, // The latitude that defines a square
|
|
r = 63.78137, deg2rad = Math.PI / 180;
|
|
var WebMercator = /** @class */ (function () {
|
|
function WebMercator() {
|
|
this.bounds = {
|
|
x1: -200.37508342789243,
|
|
x2: 200.37508342789243,
|
|
y1: -200.3750834278071,
|
|
y2: 200.3750834278071
|
|
};
|
|
this.maxLatitude = maxLatitude;
|
|
}
|
|
WebMercator.prototype.forward = function (lonLat) {
|
|
var sinLat = Math.sin(lonLat[1] * deg2rad);
|
|
var xy = [
|
|
r * lonLat[0] * deg2rad,
|
|
r * Math.log((1 + sinLat) / (1 - sinLat)) / 2
|
|
];
|
|
if (Math.abs(lonLat[1]) > maxLatitude) {
|
|
xy.outside = true;
|
|
}
|
|
return xy;
|
|
};
|
|
WebMercator.prototype.inverse = function (xy) {
|
|
return [
|
|
xy[0] / (r * deg2rad),
|
|
(2 * Math.atan(Math.exp(xy[1] / r)) - (Math.PI / 2)) / deg2rad
|
|
];
|
|
};
|
|
return WebMercator;
|
|
}());
|
|
export default WebMercator;
|