Ordenar pela Latitude e Longitude

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?

Cara, com a biblioteca do Google Maps você não consegue já ter todas as informações que precisa ?

O problema é que tenho uma lista de latitudes e longitudes cadastradas no banco de dados. Preciso ordená-las.

Se for pensar, latitude e longitude são dois números. Não seria somente ordenar?

Mas como ordenar baseando-se na latitude e longitude do cliente?

Algo parecido, mas sem uma solução em JPQL.

http://stackoverflow.com/questions/2064977/jpql-to-get-nearest-records-by-latitude-and-longitude

Isso deu certo no SQL

SELECT *, SQRT(POW((69.1 * (registro.latitude - -25.428356)) , 2 ) + POW((53 * (registro.longitude - -49.273252)), 2)) AS distance FROM registro ORDER BY distance ASC LIMIT 5
O problema é passar isso pro JPQL.

JPQL não tem a função POW

Qual é o banco de dados?

Como não sei qual é o banco, não tenho certezxa se o POW seria equivalente à função POWER (do Oracle), que serve pra calcular exponenciação.

Não conheço absolutamente nada de JPQL, mas vc não consegue calcular exponenciação no JPQL ou então em alguma outra camada do teu código?