/** * Converts spherical web mercator to tile pixel X/Y at zoom level 0 * for 256x256 tile size and inverts y coordinates. (EPSG: 3857) * * @param {L.point} p Leaflet point with web mercator coordinates * @return {L.point} Leaflet point with tile pixel x and y corrdinates */ function mercatorToPixels(p) { var pixelX = (p.x + (EARTH_EQUATOR / 2.0)) / (EARTH_EQUATOR / TILE_SIZE); var pixelY = ((p.y - (EARTH_EQUATOR / 2.0)) / (EARTH_EQUATOR / -TILE_SIZE)); return L.point(pixelX, pixelY); } /** * Converts latitude/longitude to tile pixel X/Y at zoom level 0 * for 256x256 tile size and inverts y coordinates. (EPSG: 4326) * * @param {L.point} p Leaflet point in EPSG:3857 * @return {L.point} Leaflet point with tile pixel x and y corrdinates */ function latLonToPixels(lat, lon) { var sinLat = Math.sin(lat * Math.PI / 180.0); var pixelX = ((lon + 180) / 360) * TILE_SIZE; var pixelY = (0.5 - Math.log((1 + sinLat) / (1 - sinLat)) / (Math.PI * 4)) * TILE_SIZE; return L.point(pixelX, pixelY); }