Merge commit '4a8c8bf2baecd56605305e4c5879e22346df3243'
diff --git a/src/main/java/ch/hsr/geohash/GeoHash.java b/src/main/java/ch/hsr/geohash/GeoHash.java
index 0645b24..0e07ebb 100644
--- a/src/main/java/ch/hsr/geohash/GeoHash.java
+++ b/src/main/java/ch/hsr/geohash/GeoHash.java
@@ -141,6 +141,16 @@
return hash;
}
+ /**
+ * This method uses the given number of characters as the desired precision
+ * value. The hash can only be 64bits long, thus a maximum precision of 12
+ * characters can be achieved.
+ */
+ public static String geoHashStringWithCharacterPrecision(double latitude, double longitude, int numberOfCharacters) {
+ GeoHash hash = withCharacterPrecision(latitude, longitude, numberOfCharacters);
+ return hash.toBase32();
+ }
+
private GeoHash(double latitude, double longitude, int desiredPrecision) {
point = new WGS84Point(latitude, longitude);
desiredPrecision = Math.min(desiredPrecision, 64);
diff --git a/src/test/java/ch/hsr/geohash/GeoHashTest.java b/src/test/java/ch/hsr/geohash/GeoHashTest.java
index 9a11c70..f3eac24 100644
--- a/src/test/java/ch/hsr/geohash/GeoHashTest.java
+++ b/src/test/java/ch/hsr/geohash/GeoHashTest.java
@@ -165,6 +165,9 @@
}
assertEncodingWithCharacterPrecision(new WGS84Point(39.0247389581054, -76.5110040642321), 12, "dqcw4bnrs6s7");
+
+ String geoHashString = GeoHash.geoHashStringWithCharacterPrecision(point.getLatitude(), point.getLongitude(), 12);
+ assertEquals(fullStringValue, geoHashString);
}
private void assertEncodingWithCharacterPrecision(WGS84Point point, int numberOfCharacters, String stringValue) {