Eu estava usando a API do google para calcular distância, mas ficou R$1500,00 no final do mês.
Encontrei essa fórmula que faz o cálculo, mas você precisa de latitude e longitude, vai acabar precisando passar o endereço como parametro para gerar os pontos de lat e long em outra api lib.
export function calculateLatAndLong(latitude1: number, longitude1: number, latitude2: number, longitude2: number, unit: 'kilometers' | 'miles' = 'kilometers'): { value: number, unit: string } {
const radius = 6371; // Earth's radius in kilometers
const dLat = (latitude2 - latitude1) * Math.PI / 180;
const dLon = (longitude2 - longitude1) * Math.PI / 180;
const a = Math.pow(Math.sin(dLat / 2), 2) + Math.cos(latitude1 * Math.PI / 180) * Math.cos(latitude2 * Math.PI / 180) * Math.pow(Math.sin(dLon / 2), 2);
const c = 2 * Math.atan(Math.sqrt(a) / Math.sqrt(1 - a));
const distanceInKm = radius * c;
const kmToMiles = 0.621371;
const value = unit === 'kilometers' ? parseFloat((distanceInKm * kmToMiles).toFixed(2)) : parseFloat(distanceInKm.toFixed(2));
return { value, unit };
}
Acho que você também poderia utilizar ageolib
Outras Alternativas