Compruebe si una dirección está en el radio de reparto
Decida en un paso si una dirección entra en su zona de reparto: una situada a 6,283267 km en línea recta del centro queda dentro de un radio de 10 km. Introduzca las dos coordenadas y el radio. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Latitud del centro
- 40,7128
- Longitud del centro
- -74,006
- Latitud de la dirección
- 40,73061
- Longitud de la dirección
- -73,935242
- Radio máximo (km)
- 10
- Distancia (km)
- 6,283267
Una promesa de entrega suele comenzar con una pregunta práctica: ¿está esta dirección lo bastante cerca del centro asignado? Indique la latitud y longitud del centro, las de la dirección de entrega y el radio máximo en kilómetros. La capacidad valida ambos pares, calcula la distancia ortodrómica en línea recta y devuelve una decisión clara junto con la distancia medida. Es determinista, no requiere mapas y resulta útil en pagos, filtros de despacho y reglas operativas repetibles.
Cómo se calcula la decisión de la zona de reparto
La capacidad considera el centro como el punto central de una zona circular y el radio máximo indicado como su límite. Calcula la menor distancia sobre la superficie entre el centro y la dirección mediante la fórmula de Haversine y un radio terrestre medio fijo de 6371.0088 kilómetros. El resultado es una distancia ortodrómica, también llamada distancia en línea recta.
La comparación usa el valor interno completo. El modelo no examina calles, puentes, ríos, tráfico, restricciones ni polígonos manuales. Úselo cuando la regla comercial sea radial o como filtro económico antes de un sistema de rutas o territorios más costoso.
Preparación de coordenadas e interpretación de errores
Las latitudes van de -90 a 90 grados decimales y las longitudes de -180 a 180, incluidos los extremos. El radio debe ser cero o positivo; con cero solo se admite la misma coordenada del centro. Un error frecuente consiste en invertir latitud y longitud.
Como algunas longitudes también caben en el intervalo de latitud, la validación podría aprobar un lugar equivocado. Mantenga el mismo orden en geocodificación, almacenamiento y solicitud. Use posiciones geográficas en grados decimales, no metros proyectados, códigos postales ni direcciones sin procesar.
Geocodifique primero y conserve precisión suficiente. La validación no confirma que el punto corresponda al edificio, acceso o pin deseado.
Uso seguro en el pago y el despacho
Si opera varios centros, evalúe cada uno, descarte los resultados false y ordene los demás por distancia, existencias, carga o plazo. Coincidir con el radio no garantiza una ruta viable. Costas, carreteras restringidas, peajes, ferris, recintos cerrados y territorios locales pueden volver impráctico un punto cercano.
En esos casos, complete el filtro radial con rutas o polígonos. Defina el radio mediante una política comercial explícita. El cálculo no usa red, azar ni hora actual, por lo que las solicitudes idénticas producen respuestas idénticas.
Corrija los errores de validación en el origen de los datos, especialmente campos invertidos o geocodificación incompleta.
Qué puede hacer con ella
Elegibilidad de entrega en el pago
Decida si una dirección geocodificada está suficientemente cerca de un centro antes de ofrecer entrega local o en el mismo día.
Selección del centro elegible más cercano
Compare una dirección con varios centros, elimine los que superen su radio y clasifique el resto por existencias y carga.
Control de calidad de datos de despacho
Valide coordenadas almacenadas y registre una distancia y un resultado repetibles para revisiones y excepciones.
Preguntas frecuentes
¿La distancia sigue las carreteras?
No. Es la distancia ortodrómica sobre la superficie terrestre. Las rutas, el tráfico y las restricciones exigen un servicio de navegación.
¿Puedo enviar una dirección postal en vez de coordenadas?
No. Geocodifique primero la dirección y envíe su latitud y longitud decimales junto con las del centro.
¿Cuánto cuesta una comprobación?
El cálculo es determinista y no llama a proveedores de mapas.
¿Una dirección justo en el límite del radio cuenta como dentro?
Sí. La dirección está en la zona cuando su distancia es menor o igual que el radio, y la comparación usa la distancia completa sin redondear, así que el redondeo que se muestra nunca cambia la decisión.
¿Qué pasa si invierto latitud y longitud?
Muchos pares invertidos siguen pareciendo válidos, porque la mayoría de las longitudes también caben en el rango de latitudes, pero describen otro lugar. Mantenga siempre el mismo orden, desde la geocodificación hasta esta comprobación.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}'const res = await fetch("https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hub_lat":40.7128,"hub_lon":-74.006,"address_lat":40.73061,"address_lon":-73.935242,"max_radius_km":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/last-mile-delivery-zone-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"hub_lat": 40.7128,
"hub_lon": -74.006,
"address_lat": 40.73061,
"address_lon": -73.935242,
"max_radius_km": 10
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.last_mile_delivery_zone_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cómo se calcula la decisión de la zona de reparto
Si la distancia calculada sin redondear es menor o igual que el radio máximo, within_zone vale true; de lo contrario, false. La respuesta incluye distance_km, redondeado a seis decimales, y repite max_radius_km para facilitar auditorías.
Preparación de coordenadas e interpretación de errores
Facilite cinco valores numéricos finitos: hub_lat, hub_lon, address_lat, address_lon y max_radius_km. Los valores ausentes, textos no numéricos, infinitos o coordenadas fuera del intervalo producen invalid_input.
Uso seguro en el pago y el despacho
Durante el pago, ejecute la capacidad después de convertir la dirección en coordenadas y use within_zone como una entrada de la oferta de entrega. Guarde distance_km en la auditoría del pedido para explicar la decisión. Cada elemento correcto de API cuesta $0.002.
Preguntas técnicas
¿Se incluye una dirección situada justo en el límite?
Sí. within_zone vale true cuando la distancia completa es menor o igual que max_radius_km.
¿Qué ocurre si un par de coordenadas no es válido?
Las latitudes o longitudes ausentes, no finitas o fuera de rango devuelven invalid_input, sin decisión de zona.