◁ Volver

Script que calcula el asteroide más cercano

Cargando el asteroide más cercano…

Este script está conectado a la API de la NASA NEO (Near Earth Object). De los asteroides que pasan por la Tierra, coge el más cercano y muestra el nombre, la velocidad y la distancia. Funciona en tiempo real.

Para usarlo hace falta generar una clave API personal, que se puede hacer en el portal de APIs de la NASA.

Aquí está el código que lo hace funcionar:


<div id="asteroid-info">Cargando el asteroide más cercano…</div>

<script>
  document.addEventListener("DOMContentLoaded", function() {
    const apiKey = 'TU_API_KEY';
    const url = `https://api.nasa.gov/neo/rest/v1/feed?api_key=${apiKey}`;

    fetch(url)
      .then(response => response.json())
      .then(data => {
        const container = document.getElementById("asteroid-info");
        const today = new Date().toISOString().split('T')[0];
        const asteroidsToday = data.near_earth_objects[today];
        if (!asteroidsToday || asteroidsToday.length === 0) {
          container.innerText = "No hay asteroides cercanos hoy.";
          return;
        }

        let closest = asteroidsToday.reduce((prev, curr) => {
          const prevDist = parseFloat(prev.close_approach_data[0].miss_distance.kilometers);
          const currDist = parseFloat(curr.close_approach_data[0].miss_distance.kilometers);
          return (currDist < prevDist) ? curr : prev;
        });

        const name = closest.name || 'Nombre no disponible';
        const distance = parseFloat(closest.close_approach_data[0].miss_distance.kilometers).toFixed(0);
        const velocity = parseFloat(closest.close_approach_data[0].relative_velocity.kilometers_per_hour).toFixed(0);

        const distanceFormatted = Number(distance).toLocaleString('es-ES');
        const velocityFormatted = Number(velocity).toLocaleString('es-ES');

        container.innerHTML = `
          <div>
            <p><strong>Asteroide más cercano:</strong></p>
            <p><em>${name}</em></p>
            <p>Distancia: ${distanceFormatted} km</p>
            <p>Velocidad: ${velocityFormatted} km/h</p>
          </div>
        `;
      })
      .catch(() => {
        document.getElementById("asteroid-info").innerText = "Error al obtener datos de asteroides.";
      });
  });
</script>
  

© 2025 José Luengo Fernández. Todos los derechos reservados.

-⚇-