Digamos que tengo la coordenada de latitud y longitud [30, -87]. Desde ese punto, me gustaría poder encontrar dónde estaría mi ubicación después de viajar, digamos, 10 km a 45 grados de rumbo.
Mi primer intento de tratar de resolver esto no salió tan bien como se puede ver a continuación. Obviamente, esto no tiene en cuenta las unidades, que es realmente la parte más difícil de comprender al menos para mí.
var bearing = 45; var distance = 10; var position = { "latitude": 30, "longitude": -87 }; var newLat = Math.cos(bearing) * distance + position.latitude; var newLon = Math.sin(bearing) * distance + position.longitude;Supongo que el radio de la tierra entrará en juego en algún momento, pero realmente no sabía por dónde empezar, por lo que cualquier ayuda sería muy apreciada.
He usado código python aquí: obtener lat/long dado el punto actual, la distancia y el rumbo , y convertirlo en código JS para obtener la respuesta.
Aquí está el código:
const bearing = 45; const bearing_rad = (bearing*Math.PI)/180; const distance = 10; const EARTH_RADIUS = 6378.1; const initial_position = { "latitude": 30, "longitude": -87 }; const init_lat = (initial_position.latitude*Math.PI)/180; const init_lon = (initial_position.longitude*Math.PI)/180; const final_lat = (180/Math.PI)*(Math.asin( Math.sin(init_lat)*Math.cos(distance/EARTH_RADIUS) + Math.cos(init_lat)*Math.sin(distance/EARTH_RADIUS)*Math.cos(bearing_rad))); const final_lon = (180/Math.PI)*(init_lon + Math.atan2(Math.sin(bearing_rad)*Math.sin(distance/EARTH_RADIUS)*Math.cos(init_lat), Math.cos(distance/EARTH_RADIUS)-Math.sin(init_lat)*Math.sin(final_lat))); console.log(final_lat, final_lon); // 30.06350049619102 -86.96303358059173