pull/1/head
Mike Barry 2021-06-24 05:29:20 -04:00
rodzic 875464a13f
commit 753a4aee03
1 zmienionych plików z 8 dodań i 7 usunięć

Wyświetl plik

@ -120,22 +120,23 @@ public class GeoUtils {
}
private static final double QUANTIZED_WORLD_SIZE = Math.pow(2, 31);
private static final double HALF_QUANTIZED_WORLD_SIZE = QUANTIZED_WORLD_SIZE / 2;
private static final long LOWER_32_BIT_MASK = (1L << 32) - 1L;
public static long encodeFlatLocation(double lon, double lat) {
double worldX = getWorldX(lon) / 2 + 0.5;
double worldY = getWorldY(lat) / 2 + 0.5;
long x = (long) (worldX * QUANTIZED_WORLD_SIZE);
long y = (long) (worldY * QUANTIZED_WORLD_SIZE);
return (x << 32) | y;
double worldX = getWorldX(lon) + 1;
double worldY = getWorldY(lat) + 1;
long x = (long) (worldX * HALF_QUANTIZED_WORLD_SIZE);
long y = (long) (worldY * HALF_QUANTIZED_WORLD_SIZE);
return (x << 32) | (y & LOWER_32_BIT_MASK);
}
public static double decodeWorldY(long encoded) {
return ((((double) (encoded & LOWER_32_BIT_MASK)) / QUANTIZED_WORLD_SIZE) - 0.5) * 2;
return (((double) (encoded & LOWER_32_BIT_MASK)) / HALF_QUANTIZED_WORLD_SIZE) - 1;
}
public static double decodeWorldX(long encoded) {
return ((((double) (encoded >>> 32)) / QUANTIZED_WORLD_SIZE) - 0.5) * 2;
return (((double) (encoded >>> 32)) / HALF_QUANTIZED_WORLD_SIZE) - 1;
}
public static double getZoomFromLonLatBounds(Envelope envelope) {