Entre los formatos para indicar una geolocalización tenemos el formato numérico (usado por Google Maps) y el formato de grados, minutos y segundos.

Ejemplos de ambos:

  • Formato numérico: lat = 40.282229, lng = -3.488922
  • Formato grados, minutos, segundos: 40° 16′ 56.0244” N, 3° 29′ 20.1192” W

En Internet hay varios convertidores de un formato a otro. Podéis usar por ejemplo latlong.net.

Convertir DMS a formato numérico

Transformar de DMS (Degrees Minutes Seconds) al formato numérico es sencillo:
lat = degrees + minutes / 60 + segundos / 3600
Seguro que te recuerda a como se convierte la hora.

El problema viene con los signos.

  • Si la latitud es norte, el signo es positivo. Si es sur, negativo
  • Si la longitud es este (East) es positivo, si no (West) negativo.

Funciones Javascript

Un código en Javascript vale más que mil palabras:

function dmsToLatLng(/* 40 deg 3' 24.36" N */ dms) {
var c = dms.match(/(\d+(\.\d+)?|[NSWE])/g);
return (Number(c[0]) + Number(c[1]) / 60 + Number(c[2]) / 3600) * (c[3] == "N" || c[3] == "E" ? 1 : -1);
}


function dmsPositionToLatLng(/* 0 deg 3' 24.36" N, 0 deg 5' 4.45" E */ dmsPosition) {
var c = dmsPosition.split(",");
return {
lat : Gallery.dmsToLatLng(c[0]),
lng : Gallery.dmsToLatLng(c[1])
};
}