From 942e01af3a411bd7ad9e615f36a85bfeda5b148b Mon Sep 17 00:00:00 2001 From: fummicc1 <fumiya.tennis1@gmail.com> Date: Sun, 24 Nov 2024 18:56:02 +0900 Subject: [PATCH] Keep binary length --- Sources/GeoHashFramework/GeoHash.swift | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Sources/GeoHashFramework/GeoHash.swift b/Sources/GeoHashFramework/GeoHash.swift index 4f926b2..427dc25 100644 --- a/Sources/GeoHashFramework/GeoHash.swift +++ b/Sources/GeoHashFramework/GeoHash.swift @@ -224,14 +224,26 @@ extension GeoHash { let southWest = combineBits(latitude: south, longitude: west) return [ - GeoHash(binary: combineBits(latitude: north, longitude: longitudeBits), precision: precision), + GeoHash( + binary: combineBits(latitude: north, longitude: longitudeBits), + precision: precision + ), GeoHash(binary: northEast, precision: precision), - GeoHash(binary: combineBits(latitude: latitudeBits, longitude: east), precision: precision), + GeoHash( + binary: combineBits(latitude: latitudeBits, longitude: east), + precision: precision + ), GeoHash(binary: southEast, precision: precision), - GeoHash(binary: combineBits(latitude: south, longitude: longitudeBits), precision: precision), + GeoHash( + binary: combineBits(latitude: south, longitude: longitudeBits), + precision: precision + ), GeoHash(binary: southWest, precision: precision), - GeoHash(binary: combineBits(latitude: latitudeBits, longitude: west), precision: precision), - GeoHash(binary: northWest, precision: precision) + GeoHash( + binary: combineBits(latitude: latitudeBits, longitude: west), + precision: precision + ), + GeoHash(binary: northWest, precision: precision), ] } @@ -240,7 +252,9 @@ extension GeoHash { if let decimal = Int(bits, radix: 2) { let moved = decimal + delta // 11 -> 1110 - return String(moved, radix: 2) + // keep bits length + let binary = String(moved, radix: 2) + return binary.padding(toLength: bits.count, withPad: "0", startingAt: 0) } return bits }