Installed leaflet in extlib
[mediagoblin.git] / extlib / leaflet / src / geo / projection / Projection.Mercator.js
CommitLineData
c5ba5b04
JW
1\r
2L.Projection.Mercator = {\r
3 MAX_LATITUDE: 85.0840591556,\r
4 \r
5 R_MINOR: 6356752.3142,\r
6 R_MAJOR: 6378137,\r
7 \r
8 project: function(/*LatLng*/ latlng) /*-> Point*/ {\r
9 var d = L.LatLng.DEG_TO_RAD,\r
10 max = this.MAX_LATITUDE,\r
11 lat = Math.max(Math.min(max, latlng.lat), -max),\r
12 r = this.R_MAJOR,\r
13 x = latlng.lng * d * r,\r
14 y = lat * d,\r
15 tmp = this.R_MINOR / r,\r
16 eccent = Math.sqrt(1.0 - tmp * tmp),\r
17 con = eccent * Math.sin(y);\r
18 \r
19 con = Math.pow((1 - con)/(1 + con), eccent * 0.5);\r
20 \r
21 var ts = Math.tan(0.5 * ((Math.PI * 0.5) - y)) / con;\r
22 y = -r * Math.log(ts);\r
23 \r
24 return new L.Point(x, y);\r
25 },\r
26 \r
27 unproject: function(/*Point*/ point, /*Boolean*/ unbounded) /*-> LatLng*/ { \r
28 var d = L.LatLng.RAD_TO_DEG,\r
29 r = this.R_MAJOR,\r
30 lng = point.x * d / r,\r
31 tmp = this.R_MINOR / r,\r
32 eccent = Math.sqrt(1 - (tmp * tmp)),\r
33 ts = Math.exp(- point.y / r),\r
34 phi = Math.PI/2 - 2 * Math.atan(ts),\r
35 numIter = 15,\r
36 tol = 1e-7,\r
37 i = numIter,\r
38 dphi = 0.1,\r
39 con;\r
40 \r
41 while ((Math.abs(dphi) > tol) && (--i > 0)) {\r
42 con = eccent * Math.sin(phi);\r
43 dphi = Math.PI/2 - 2 * Math.atan(ts * Math.pow((1.0 - con)/(1.0 + con), 0.5 * eccent)) - phi;\r
44 phi += dphi;\r
45 }\r
46 \r
47 return new L.LatLng(phi * d, lng, unbounded);\r
48 }\r
49};\r