chore: add Kotlin directory structure, update registry.db and gitignore
Añade estructura inicial kotlin/functions/, actualiza registry.db con todos los cambios indexados, y ajusta .gitignore. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
---
|
||||
name: nominatim_reverse_geocode
|
||||
kind: function
|
||||
lang: kt
|
||||
domain: infra
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "fun nominatimReverseGeocode(lat: Double, lon: Double, lang: String = \"es\"): GeocodedLocation"
|
||||
description: "Reverse geocoding usando Nominatim (OpenStreetMap). Convierte coordenadas lat/lon a una dirección estructurada (calle, ciudad, país, etc.) para Android/Kotlin sin dependencias externas."
|
||||
tags: [geocoding, nominatim, openstreetmap, location, address, infra, android, kotlin]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports:
|
||||
- "org.json.JSONObject"
|
||||
- "java.net.HttpURLConnection"
|
||||
- "java.net.URL"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "kotlin/functions/infra/nominatim_reverse_geocode.kt"
|
||||
params:
|
||||
- name: lat
|
||||
desc: "Latitud en grados decimales (-90.0 a 90.0)."
|
||||
- name: lon
|
||||
desc: "Longitud en grados decimales (-180.0 a 180.0)."
|
||||
- name: lang
|
||||
desc: "Código de idioma ISO 639-1 para la respuesta de Nominatim. Por defecto \"es\" (español)."
|
||||
output: "GeocodedLocation con los campos normalizados: displayName, street, houseNumber, neighbourhood, city, state, country, postcode, lat, lon, osmType, osmId."
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```kotlin
|
||||
val loc = nominatimReverseGeocode(40.4168, -3.7038)
|
||||
println(loc.city) // "Madrid"
|
||||
println(loc.street) // "Calle Mayor"
|
||||
println(loc.country) // "España"
|
||||
println(loc.displayName) // cadena completa de Nominatim
|
||||
```
|
||||
|
||||
## Comportamiento
|
||||
|
||||
- Realiza GET a `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=...&lon=...&accept-language=...&zoom=18`.
|
||||
- Cabecera `User-Agent: fn_registry/1.0` obligatoria por política de uso de Nominatim.
|
||||
- Timeout de 5 segundos tanto para conexión como para lectura.
|
||||
- Usa solo `java.net.HttpURLConnection` y `org.json.JSONObject` — disponibles en el Android SDK sin dependencias externas.
|
||||
- Resolución de `city`: prueba `address.city` → `address.town` → `address.village` → `""`.
|
||||
- Resolución de `neighbourhood`: prueba `address.neighbourhood` → `address.suburb` → `""`.
|
||||
- Lanza `RuntimeException` si el HTTP status no es 200 o si falla la lectura de la respuesta.
|
||||
|
||||
## Notas
|
||||
|
||||
Función paralela a `nominatim_reverse_geocode_py_infra` pero adaptada para Android/Kotlin.
|
||||
No llamar desde el hilo principal de Android — usar `Dispatchers.IO` o un `ExecutorService`.
|
||||
El campo `zoom=18` maximiza el detalle de la dirección (nivel de número de portal).
|
||||
Reference in New Issue
Block a user