El blog de Iván Argulo

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

Podemos utilizar el siguiente código en PHP para obtener la geolocalización, es decir, las coordenadas, de cualquier dirección que queramos. Estas coordenadas (latitud y longitud) nos servirán para poder colocar la dirección en un mapa de Google Maps.

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

$lat = $resultado['results'][0]['geometry']['location']['lat'];
$lng = $resultado['results'][0]['geometry']['location']['lng'];

return "{$lat}, {$lng}";

Es un código muy sencillo, pero que conviene tener siempre a mano. Espero que os sea útil.

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 :)


Comentarios (10)

  1. Image
    • William /
    • Comentado: 20 marzo 2012 a las 21:11

    Gracias por compartir su conocimiento.

  2. Image
    • Carlos /
    • Comentado: 29 marzo 2013 a las 7:49

    NO funciona :8

    • Image

      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.

  3. Image
    • Adrián /
    • Comentado: 12 abril 2013 a las 6:17

    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.

  4. Image
    • Adrián /
    • Comentado: 5 junio 2013 a las 5:16

    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];
    }
    —————————————————————————————————–

  5. Image

    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”;

    • Image

      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 :)

      • Image
        • jcrequena /
        • Comentado: 3 septiembre 2013 a las 19:23

        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…)

      • Image

        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.

        Gracias y suerte!