|
|
@@ -5,6 +5,7 @@ import (
|
|
|
"io"
|
|
|
"net/http"
|
|
|
"net/url"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
@@ -58,6 +59,20 @@ func GeocodeReverse(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
|
|
|
|
writeJSON(w, http.StatusOK, map[string]interface{}{
|
|
|
- "display_name": data.DisplayName,
|
|
|
+ "display_name": reverseAddress(data.DisplayName),
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+// reverseAddress разворачивает адрес Nominatim (сперва самое точное -> в конце самое общее)
|
|
|
+// в человекочитаемый формат: страна, регион, город, улица, дом.
|
|
|
+func reverseAddress(addr string) string {
|
|
|
+ if addr == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ parts := strings.Split(addr, ", ")
|
|
|
+ for i, j := 0, len(parts)-1; i < j; i, j = i+1, j-1 {
|
|
|
+ parts[i], parts[j] = parts[j], parts[i]
|
|
|
+ }
|
|
|
+ return strings.Join(parts, ", ")
|
|
|
+}
|
|
|
+}
|