DirecciónVE API

Motor de resolución de direcciones para Venezuela. Cada metro cuadrado tiene un Plus Code único.

Instalación

<script src="https://direccionve.org/direccionve.js"></script>

O descárgalo y sírvelo localmente:

<script src="/direccionve.js"></script>

Quick Start

// 1. Cargar datos
const [houses, streets] = await Promise.all([
  fetch('/data-houses.json').then(r => r.json()),
  fetch('/data-streets.json').then(r => r.json())
]);

// 2. Inicializar
DireccionVE.init(houses, streets);

// 3. Buscar
const results = DireccionVE.search('Altamira Caracas');
console.log(results[0]);
// → { address: "Av. Luis Roche, Altamira", code: "67P8GRJ5+XX", lat: 10.5, lng: -66.85 }

// 4. Resolver un Plus Code
const place = DireccionVE.resolve('67P8GRJ5+XX');
console.log(place.address, place.distance + 'm');

Métodos

DireccionVE.init(housesData, streetsData)

Inicializa el motor. Debe llamarse antes de cualquier otra función.

ParámetroTipoDescripción
housesDataArrayArray de [zip, city, street, number, lng, lat]
streetsDataArrayArray de [city, name, lng, lat]

Retorna: undefined

Búsqueda de texto libre. Tokeniza la query y puntúa por coincidencia de tokens.

ParámetroTipoDefaultDescripción
querystringTexto libre: ciudad, calle, número, CP
limitnumber20Máximo de resultados

Retorna: Array<Result>

DireccionVE.search('los palos grandes', 5);
// → [{ address, code, lat, lng, type }, ...]

DireccionVE.lookup({ city, street, number? })

Búsqueda exacta por ciudad + calle + número opcional.

ParámetroTipoDescripción
citystringCiudad o localidad
streetstringNombre de la calle
numberstring(Opcional) Número de casa

Retorna: Result | null

DireccionVE.lookup({ city: 'Caracas', street: 'Av Libertador', number: '123' });
// → { address: "Av Libertador, #123, Caracas", code: "67P8...", lat, lng }

DireccionVE.resolve(plusCode)

Dado un Plus Code, encuentra la dirección conocida más cercana.

ParámetroTipoDescripción
plusCodestringPlus Code válido (ej: 67P8GRJ5+XX)

Retorna: ResolveResult | null

DireccionVE.resolve('67P8GRJ5+XX');
// → { address, code, lat, lng, nearestLat, nearestLng, distance }
// distance = metros entre el código y la dirección más cercana

DireccionVE.suggest(partial, limit?)

Autocompletado de calles y ciudades.

ParámetroTipoDefaultDescripción
partialstringTexto parcial (mín. 2 caracteres)
limitnumber10Máximo sugerencias

Retorna: Array<string>

DireccionVE.suggest('altam');
// → ["Altamira, Av. Luis Roche", "Altamira, Calle Madrid", ...]

DireccionVE.encode(lat, lng, length?)

Convierte coordenadas a Plus Code.

ParámetroTipoDefaultDescripción
latnumberLatitud (-90 a 90)
lngnumberLongitud (-180 a 180)
lengthnumber10Longitud del código (8, 10, 11, 12)

Retorna: string

DireccionVE.encode(10.4961, -66.8509);
// → "67P8GRJ5+XX"

DireccionVE.decode(plusCode)

Decodifica Plus Code a coordenadas.

ParámetroTipoDescripción
plusCodestringPlus Code válido

Retorna: { lat, lng, latLo, lngLo, latHi, lngHi, latR, lngR }

const pos = DireccionVE.decode('67P8GRJ5+XX');
console.log(pos.lat, pos.lng); // 10.4961, -66.8509

DireccionVE.isValidCode(code)

Valida si un string es un Plus Code válido.

ParámetroTipoDescripción
codestringString a validar

Retorna: boolean

DireccionVE.getStats()

Estadísticas del dataset cargado.

Retorna: { houses, streets, cities, uniqueStreets }

DireccionVE.getStats();
// → { houses: 3249, streets: 17351, cities: 412, uniqueStreets: 8920 }

Datos

Los archivos JSON se sirven desde https://direccionve.org/:

ArchivoRegistrosDescripción
data-houses.json3,249Direcciones con número [zip, city, street, number, lng, lat]
data-streets.json17,351Calles [city, name, lng, lat]
data-all-addresses.json145,123Todos los POI de OSM Venezuela
data-centers.json15,748Centros de votación [code, name, state, muni, parish, voters, lat, lng, plusCode]

MIT — Datos de OpenStreetMap (ODbL) y CNE (público).
← Ir al mapa · GitHub