Pessoal, bom dia.
Tenho uma lista de locais no banco de dados, contendo em cada registro a longitude e latitude.
Para ordenar os registros que estão mais perto de uma longitude e latitude específica de um cliente de um celular por exemplo, carrego todos os registros e um a um faço o calculo no código java, ordenando pelo mais perto:
[code] public static double calcularDistancia(double latitudeInicial, double longitudeInicial, double latitudeFinal, double longitudeFinal)
{
int raioTerra = 6371;
double PI = Math.PI;
int valorMetade = 90;
double v1 = Math.cos(PI * (valorMetade - latitudeFinal) / 180);
double v2 = Math.cos((valorMetade - latitudeInicial) * PI / 180);
double v3 = Math.sin((valorMetade - latitudeFinal) * PI / 180);
double v4 = Math.sin((valorMetade - latitudeInicial) * PI / 180);
double v5 = Math.cos((longitudeInicial - longitudeFinal) * PI / 180);
return (raioTerra * Math.acos((v1 * v2) + (v3 * v4 * v5)));
}[/code]
Será que consigo ordenar os registros na consulta JPA somente utilizando as cordenadas de longitude e latitude?