Você está aqui: Dart ::: Dicas & Truques ::: Aplicativos e Outros |
Como calcular a distância entre dois pontos na terra em DartQuantidade de visualizações: 1661 vezes |
Nesta dica mostrarei como calcular a distância em quilômetros entre dois pontos na terra dadas suas latitudes e longitudes. Neste exemplo eu coloquei o valor de 6378.137 para o raio da terra, mas você pode definir para o valor que achar mais adequado. O cálculo usado neste código se baseia na Fórmula de Haversine, que determina a distância do grande círculo entre dois pontos em uma esfera, dadas suas longitudes e latitudes. Veja o código Dart completo: // Vamos importar a biblioteca dart:io import "dart:io"; // vamos importar a biblioteca dart:math import "dart:math"; void main(){ // vamos ler as latitudes e longitudes das duas // localizações stdout.write("Informe a primeira latitude: "); double lat1 = double.parse(stdin.readLineSync()); stdout.write("Informe a primeira longitude: "); double lon1 = double.parse(stdin.readLineSync()); stdout.write("Informe a segunda latitude: "); double lat2 = double.parse(stdin.readLineSync()); stdout.write("Informe a segunda longitude: "); double lon2 = double.parse(stdin.readLineSync()); // vamos calcular a distância entre os dois pontos em Kms double distancia = calcularDistancia(lat1, lat2, lon1, lon2); // mostramos o resultado print("Distância entre os dois pontos: ${distancia} kms"); } // função que recebe dois pontos na terra e retorna a distância // entre eles em quilômetros double calcularDistancia(double lat1, double lat2, double lon1, double lon2){ double raio_terra = 6378.137; // raio da terra em quilômetros // o primeiro passo é converter as latitudes e longitudes // para radianos lon1 = grausParaRadianos(lon1); lon2 = grausParaRadianos(lon2); lat1 = grausParaRadianos(lat1); lat2 = grausParaRadianos(lat2); // agora aplicamos a Fórmula de Haversine double dlon = lon2 - lon1; double dlat = lat2 - lat1; double a = pow(sin(dlat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(dlon / 2),2); double c = 2 * asin(sqrt(a)); // e retornamos a distância return(c * raio_terra); } // função que permite converter graus em radianos double grausParaRadianos(double graus){ return graus * (pi / 180); } Ao executar este código Dart nós teremos o seguinte resultado: Informe a primeira latitude: -16.674551 Informe a primeira longitude: -49.303598 Informe a segunda latitude: -15.579321 Informe a segunda longitude: -56.10009 A distância entre os dois pontos é: 736.9183827638687kms Neste exemplo eu calculei a distância entre as cidades de Goiânia-GO e Cuibá-MT. A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0o e 90o para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador. |
![]() |
Veja mais Dicas e truques de Dart |
Dicas e truques de outras linguagens |
VB.NET - Como contar as ocorrências de um caractere em uma string em VB.NET usando o método IndexOf() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |