package org.mtransit.android.ui.view.map.utils;
// based on Maciej Górski's Android Maps Extensions library (Apache License, Version 2.0)
public final class SphericalMercator {
private static final double MIN_LATITUDE = -85.0511287798;
private static final double MAX_LATITUDE = 85.0511287798;
private SphericalMercator() {
}
public static double fromLatitude(double latitude) {
double radians = Math.toRadians(latitude + 90) / 2;
return Math.toDegrees(Math.log(Math.tan(radians)));
}
public static double toLatitude(double mercator) {
double radians = Math.atan(Math.exp(Math.toRadians(mercator)));
return Math.toDegrees(2 * radians) - 90;
}
public static double scaleLatitude(double latitude) {
if (latitude < MIN_LATITUDE) {
latitude = MIN_LATITUDE;
} else if (latitude > MAX_LATITUDE) {
latitude = MAX_LATITUDE;
}
return fromLatitude(latitude) + 180.0;
}
public static double scaleLongitude(double longitude) {
return longitude + 180.0;
}
}