Obtener coordenadas de un punto (Latitud y Longitud) a partir de una dirección usando Google Maps
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 🙂
Publicado el febrero 7, 2012 en Uncategorized y etiquetado en PHP, Programación. Guarda el enlace permanente. 19 comentarios.
Gracias por compartir su conocimiento.
NO funciona :8
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.
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.
Hola Adrián. Parece ser que desde el día 8 de marzo de 2013 el API 2 de Google Maps no funciona. Es necesario hacer la migración a API 3. De todas formas, si me dices qué valor te devuelve el statusCode, podemos mirar el problema concreto.
https://developers.google.com/maps/documentation/geocoding/v2/?hl=es
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];
—————————————————————————————————–
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!
Me podrian decir como seria al reves?, es decir, teniendo lat y lon que me diga la direccion?
Gracias
Hola Maximiliano
Simplemente envía las coordenadas como tu consulta a Google, y te devolverá la dirección exacta!
Mira un ejemplo en esta URL:
https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=41.498889,-5.755556
Ivan. Eso lo vi. Pero por ejemplo en Mercedes (buenos aires) me devuelve la calle pero no la altura. Quizas es un tema de google?
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»;
?>
Hola Mario.
Este código es muy antiguo, para la versión 3 visita por favor esta entrada del blog: http://ivanargulo.com/blog/obtener-coordenadas-de-un-punto-latitud-y-longitud-a-partir-de-una-direccion-usando-google-maps
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»;
Mira mi anterior comentario, ahí tienes un enlace al código válido para el API 3 de Google Maps.
Un saludo.
Muchas gracias, todo resuelto.
Un saludo
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.