Obtener coordenadas de un punto (Latitud y Longitud) a partir de una dirección usando Google Maps

ESTA ENTRADA HA CAMBIADO DE UBICACIÓN.
Para ver la versión completa de la entrada, visita: http://ivanargulo.com/blog/obtener-coordenadas-de-un-punto-latitud-y-longitud-a-partir-de-una-direccion-usando-google-maps

Además, y como motivación «extra», esta entrada habla de Google Maps API versión 2, el nuevo post habla de Google Maps API versión 3. Por lo que si quieres estar actualizado y que el código funcione, visita la entrada nueva.

El siguiente fragmento de código nos permitirá geolocalizar una dirección cualquiera, usando Google Maps y PHP. Hay muchos datos de geolocalización accesibles, pero por simplicidad usaré sólo Latitud y Longitud, suficiente para posicionar cualquier objeto en un mapa.

$direccion = ‘Calle, Población, Provincia / Estado, País’;
$resultado = json_decode(file_get_contents(sprintf(‘https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%s’, urlencode($direccion))));

$estado = $resultado->status;

if ($estado == ‘OK’)
{
$lat = $resultado->results[0]->geometry->location->lat;
$long = $resultado->results[0]->geometry->location->lng;

echo “{$lat}, {$long}”;
}
else
echo “KO”;

Espero que os sea de utilidad.

UPDATE (2 de septiembre de 2013).

La URL del servicio de Google Maps ha cambiado con la versión 3 del servicio, así como la estructura de JSON que devuelve. Gracias a casas rurales por su comentario 🙂

Acerca de Iván Argulo

Programador, pianista aficionado y amante de la montaña.

Publicado el febrero 7, 2012 en Uncategorized y etiquetado en , . Guarda el enlace permanente. 19 comentarios.

  1. Gracias por compartir su conocimiento.

    • Carlos, este código lo escribí hace un año y, por lo que sé, sigue funcionando. Si me indicas el error que te aparece, puedo ayudarte a solucionarlo.

      Gracias por comentar, un saludo.

  2. Buenas, estoy usando ese codigo en varios de mis sitios web y funcionaba perfecto, pero ahora no funciona, no entra en este if ($estado == 200) , pero lo raro es nunca toque nada del codigo, simplemente dejo de funcionar, quizas google dio de baja esa funcion o mi servidor actualizo la version de PHP.

  3. Buenas, tengo este codigo de la API 2 y ya no funciona, alguien sabe como hacer funcionar este codigo para la API 3 porque haces semanas que llevo viendo y no logro hacer funcionarla, paso el codigo:

    —————————————————————————————————–
    $direccion = «$calle $num, $desc_localidad, Buenos Aires, Argentina»;
    $resultado = json_decode(file_get_contents(sprintf(‘http://maps.google.com/maps/geo?q=%s’, urlencode($direccion))));

    $estado = $resultado->Status->code;

    if ($estado == 200)
    {
    $lat = $resultado->Placemark[0]->Point->coordinates[0];
    $long = $resultado->Placemark[0]->Point->coordinates[1];
    —————————————————————————————————–

  4. Arreglado con el nuevo API:

    $direccion = «calle, numero, localidad…»;
    $resultado = json_decode(file_get_contents(sprintf(‘https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%s’, urlencode($direccion))));

    $estado = $resultado->status;

    if ($estado == ‘OK’)
    {
    $lat = $resultado->results[0]->geometry->location->lat;
    $long = $resultado->results[0]->geometry->location->lng;

    echo «{$lat}, {$long}»;
    }
    else
    echo «KO»;

    • Gracias por tu comentario, he actualizado el código con la nueva URL del API de Google. Añado un enlace a tu web en agradecimiento 🙂

      • Hola Ivan,

        Comprueba que no solo es la url, la estructura del json que devuelve Google no es la misma…

        Y muchas gracias por el enlace, te correspondo con un enlace desde otra de mis webs (si quieres te paso por privado la url, para no hacer spam…)

      • Gracias por el enlace y por la información, me dí cuenta cuando actualicé un código que había dejado de funcionar, y tengo pendiente actualizar la entrada. Mándame un correo a ivanargulo [arroba] gmail [punto] com

        Gracias y suerte!

  5. Me podrian decir como seria al reves?, es decir, teniendo lat y lon que me diga la direccion?
    Gracias

  6. Hola,
    he migrado a la version 3 y no funciona, podeis mirar que hago mal:

    status;

    if ($estado == «OK»)
    {
    $lat = $resultado->results[0]->geometry->location->lat;
    $long = $resultado->results[0]->geometry->location->lng;

    echo «la=».$lat.» lon= «.$long;
    }
    else
    echo «KO»;
    ?>

  7. Perdon no se ha grabado el codigo bien:

    $direccion = «CALLE CAMIL FABRA, 15, 08030, BARCELONA, Barcelona»;

    //$direccion = “calle, numero, localidad…”;
    $resultado = json_decode(file_get_contents(sprintf(«https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=%s», urlencode($direccion))));

    $estado = $resultado->status;

    if ($estado == «OK»)
    {
    $lat = $resultado->results[0]->geometry->location->lat;
    $long = $resultado->results[0]->geometry->location->lng;

    echo «la=».$lat.» lon= «.$long;
    }
    else
    echo «KO»;

  8. Muchas gracias, todo resuelto.

    Un saludo

  9. Me podrian ayudar, tengo un archivo en excel con las coordenadas de Latitud y Longitud, necesito extraer las direcciones del google maps y pasarlas al Excel.

Deja un comentario