tiles-client 0.12.0

Client for downloading tiles.
Documentation
use std::f64::consts::PI;

fn to_u32(n: f64) -> Option<u32>
{
  if n >= 0.0 && n <= u32::MAX as f64
  {
    Some(n as u32)
  }
  else
  {
    None
  }
}

pub(crate) fn lon_to_tile_x(lon: f64, z: u32) -> Option<u32>
{
  let z = (1 << z) as f64;
  to_u32(((lon + 180.0) / 360.0 * z).floor())
}

pub(crate) fn lat_to_tile_y(lat: f64, z: u32) -> Option<u32>
{
  let latrad = lat * PI / 180.0;
  let z = (1 << z) as f64;
  to_u32(((1.0 - latrad.tan().asinh() / PI) / 2.0 * z).floor())
}

pub(crate) fn tile_x_to_lon(x: u32, z: u32) -> f64
{
  let x = x as f64;
  let z = (1 << z) as f64;
  x / z * 360.0 - 180.0
}

pub(crate) fn tile_y_to_lat(y: u32, z: u32) -> f64
{
  let z = (1 << z) as f64;
  let n = PI - 2.0 * PI * (y as f64) / z;
  180.0 / PI * (0.5 * (n.exp() - (-n).exp())).atan()
}