| /** |
| * @fileoverview Google Maps, like many online mapping platforms, uses the Web |
| * Mercator projection. The WebMercator object defined here houses convenience |
| * methods for converting between geodetic longitude/latitude and projected |
| * coordinates. |
| * See https://en.wikipedia.org/wiki/Web_Mercator |
| * |
| * @license Copyright 2016 Google Inc. All Rights Reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| var geovelo; |
| geovelo = geovelo || {}; |
| |
| (function() { |
| |
| // Computational contstants. |
| var DEG_TO_RAD = Math.PI / 180; |
| var ZOOM_FACTOR = 128 / Math.PI; |
| var PI_OVER_FOUR = Math.PI / 4; |
| |
| geovelo.WebMercator = { |
| |
| /** |
| * Given a longitude in degrees, return its Web Mercator x pixel value. |
| */ |
| getX: function(lon) { |
| return ZOOM_FACTOR * (lon * DEG_TO_RAD + Math.PI); |
| }, |
| |
| /** |
| * Given a latitude in degrees, return its Web Mercator y pixel value. |
| */ |
| getY: function(lat) { |
| return ZOOM_FACTOR * ( |
| Math.PI - Math.log(Math.tan(PI_OVER_FOUR - lat * DEG_TO_RAD / 2))); |
| } |
| |
| }; |
| |
| })(); |