Ola, somos Arume

Desenvolvemos páxinas web, aplicacións para móbiles, capas de realidade aumentada e aplicacións para Facebook. Apaixónanos a informática e somos uns perfeccionistas incurables; por eso nos nosos proxectos utilizamos estándares.

tel. 625 519 694

Mendaña de Neyra, 34, 3º B, 15008, A Coruña

Autenticarse

Rexistrarse. Esqueceches o teu contrasinal?

Etiquetas

Saltar as etiquetas

Subscríbete ás RSS

Estás en:

  • Inicio >
  • Blog >
  • Obter enderezo postal cas coordenadas xeográficas

Obter enderezo postal cas coordenadas xeográficas

24 Set 2013 por Luis

Comentarios: 26

Xeocodificación inversa

Nun artigo anterior vimos como obter a ubicación xeográfica do usuario ca API de xeolocalización de HTML5. Neste artigo imos profundar nese tema vendo como, a través da latitude e lonxitude obtidas, podemos coñecer o enderezo real do usuario.

Para conseguilo, usaremos o Servizo de Codificación Xeográfica da API de Google Maps.

Empecemos por recordar o código para obter a latitude e a lonxitude do anterior artigo:

(function(){
	var content = document.getElementById("geolocation-test");

	if (navigator.geolocation)
	{
		navigator.geolocation.getCurrentPosition(function(objPosition)
		{
			var lon = objPosition.coords.longitude;
			var lat = objPosition.coords.latitude;

			content.innerHTML = "<p><strong>Latitude:</strong> " + lat + "</p><p><strong>Lonxitude:</strong> " + lon + "</p>";

		}, function(objPositionError)
		{
			switch (objPositionError.code)
			{
				case objPositionError.PERMISSION_DENIED:
					content.innerHTML = " Non se permitiu o acceso á posición do usuario.";
				break;
				case objPositionError.POSITION_UNAVAILABLE:
					content.innerHTML = "Non se puido acceder á información da súa posición.";
				break;
				case objPositionError.TIMEOUT:
					content.innerHTML = "O servizo tardou demasiado tempo en responder.";
				break;
				default:
					content.innerHTML = "Erro descoñecido.";
			}
		}, {
			maximumAge: 75000,
			timeout: 15000
		});
	}
	else
	{
		content.innerHTML = "O seu navegador non soporta a API de xeolocalización.";
	}
})();

Agora o que temos que facer é engadir a API de Google Maps. Para iso, no HTML da nosa páxina web, engadiremos o seguinte:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

Con isto xa poderemos traballar cos servizos do API de Google Maps. O que nos interesa é o Servizo de Codificación Xeográfica (google.maps.Geocoder). O que temos que facer é inicializar o servizo e chamar á función geocode pasándolle como parámetro un obxecto google.maps.LatLng creado cos datos de latitude e lonxitude que obtivemos co código anterior.

Así quedaría o código:

(function(){
	var content = document.getElementById("geolocation-test");

	if (navigator.geolocation)
	{
		navigator.geolocation.getCurrentPosition(function(objPosition)
		{
			var lon = objPosition.coords.longitude;
			var lat = objPosition.coords.latitude;

			var dir = "";
			var latlng = new google.maps.LatLng(lat, lon);
			geocoder = new google.maps.Geocoder();
			geocoder.geocode({"latLng": latlng}, function(results, status)
			{
				if (status == google.maps.GeocoderStatus.OK)
				{
					if (results[0])
					{
						dir = "<p><strong>Enderezo: </strong>" + results[0].formatted_address + "</p>";
					}
					else
					{
						dir = "<p>Non se puido obter ningún enderezo nesas coordenadas.</p>";
					}
				}
				else
				{
					dir = "<p>O Servizo de Codificación Xeográfica fallou co seguinte erro: " + status + ".</p>";
				}

				content.innerHTML = "<p><strong>Latitude:</strong> " + lat + "</p><p><strong>Lonxitude:</strong> " + lon + "</p>" + dir;
			});
		}, function(objPositionError)
		{
			switch (objPositionError.code)
			{
				case objPositionError.PERMISSION_DENIED:
					content.innerHTML = "Non se permitiu o acceso á posición do usuario.";
				break;
				case objPositionError.POSITION_UNAVAILABLE:
					content.innerHTML = "Non se puido acceder á información da súa posición.";
				break;
				case objPositionError.TIMEOUT:
					content.innerHTML = "O servizo tardou demasiado tempo en responder.";
				break;
				default:
					content.innerHTML = "Erro descoñecido.";
			}
		}, {
			maximumAge: 75000,
			timeout: 15000
		});
	}
	else
	{
		content.innerHTML = "O seu navegador non soporta a API de xeolocalización.";
	}
})();

Resultados devoltos polo Servizo de Codificación Xeográfica

O Servizo de Codificación Xeográfica adoita devolver máis dun resultado, normalmente enderezos de máis a menos específicos. É dicir, previsiblemente o primeiro resultado especificará o número aproximado, a rúa, a cidade e o país; mentres que o último só mostrará o país.

E no seguinte cadro podemos ver o resultado deste script aplicado nesta páxina:

O script aínda non se executou.

Comentarios

26 comentarios. Comentar.

1. Anónimo o 25 Set 2013 ás 15:33:04

Funciona

2. Anónimo o 21 Out 2013 ás 18:09:35

muy bonito

3. leon o 22 Feb 2014 ás 02:16:58

hmm...yo lo quería al revés , dar la dirección o población y que me de las coordenadas jeje

4. Luis o 22 Feb 2014 ás 08:38:15

Hola leon.

Eso puedes verlo aquí: http://www.arumeinformatica.es/utiles/buscar-coordenadas-...

Un saludo.

5. Simon o 16 Mai 2014 ás 05:16:34

Hola no me muestra nada el codigo en html como seria?

ya que cree un div con id geolocation-test y llame el script de google maps

6. Mauricio o 03 Xul 2014 ás 16:46:49

Simón debes ejecutarlo en un servidor o en tu localhost.

7. Yair Garcia o 30 Set 2014 ás 14:57:28

Buenos días, este código es justo lo que necesito para mi proyecto, pero en que parte copio el código, mi página la estoy haciendo en C#, ¿si me serviría?. Muchas gracias.

8. Alex o 30 Set 2014 ás 15:08:05

Amigo, me puede indicar como tomo la ciudad real de donde se esta abriendo una página web?. Gracias

9. Axfisiao o 17 Nov 2014 ás 14:46:06

Pues no he podido hacerlo funcionar, he copiado en la cabecera la conexión con el API y luego he abierto un par nuevo de etiquetas en la cabecera de tipo <script> para almacenar el resto del código.

Si que solicita el permiso pero no me pinta los datos en ningún lado.

Analizando el código la posibilidad de pintar en la pagina los datos están en todo el apartado en rojo pero no consigo que funcione ni siquiera publicándola en un servidor ¿alguien podría pasarme el código ya implementado en una página?

10. Belex o 25 Nov 2014 ás 19:53:35

A mi tampoco me quedaba, pero testee el código en un archivo limpio y funcionó de maravilla, el <div id="geolocation-test"> </div> lo puse antes del script y el API lo coloqué en el header.

Gracias por el aporte me sirvió mucho :D !!

11. Wilson o 07 Mar 2015 ás 05:45:12

Hola, alguien tiene el script completo en html por favor ya que no puedo hacerlo funcionar, gracias de antemano.

12. Wilson o 07 Mar 2015 ás 06:05:50

Perfecto con la solución de Belex me funciono, pero al final de la pagina me sale el siguiente mensaje

Esperando a maps.googleapis.com...

Y es como si la pagina no estaria completamente cargada, y es un poco molesto por que distrae la vista, cualquier sugerencia es bienvenida, muchas gracias por el manual muy bueno.

13. Anónimo o 03 Xuñ 2015 ás 15:30:01

Hola!! necesito el codigo de este mapa

http://www.arumeinformatica.es/utiles/buscar-coordenadas-...

necesito el codigo que cuando tu cambies de lugar te des las coordenadas.

Muchas gracias!!!!!

14. David Guerra o 07 Ago 2015 ás 00:16:35

Hola, estoy haciendo una pagina web, y la verdad no se mucho, pero lo que necesito es que cuando alguien visita mi pagina desde cualquier dispositivo, a mi me llegue un email con su ubicación. Alguien puede ayudarme? gracias

15. David Guerra o 07 Ago 2015 ás 00:41:43

Hola, estoy haciendo una pagina web, y la verdad no se mucho, pero lo que necesito es que cuando alguien visita mi pagina desde cualquier dispositivo, a mi me llegue un email con su ubicación. Alguien puede ayudarme? gracias

16. Anónimo o 27 Ago 2015 ás 06:37:04

Buenas noches, estoy tratando de hacer una pagina que rastree diversos dispositivos, como celulares, tablets y laptops, la idea es que mis clientes ingresen el imei o serie y yo pueda brindarles el servicio de geolocalizacion.

llevo mas de un año buscando la forma o bien si hay un código HTML que me puedan brindar de verdad de verdad se los agradecería.

mi correo es carlosmaa25@gmail.com

gracias

17. Anónimo o 07 Out 2015 ás 19:53:07

a mi no me funciona

18. Anónimo o 13 Out 2015 ás 07:21:51

Deseo obtener el codigo completo ya que no me funciona gracias luiizkrojaz@gmail.com

19. IngLuis o 28 Nov 2015 ás 20:57:15

Eres el mejor, realmente me funciona a la perfección, lo busque por todos lados y no lo encontraba.

20. Lucas Correa 709 o 17 Feb 2016 ás 17:29:03

AYUDA! No me funciona. Osea yo quiero saber mi "dirección postal".. AYUDA PORFA !!

21. Lucas Correa 709 o 17 Feb 2016 ás 17:29:04

AYUDA! No me funciona. Osea yo quiero saber mi "dirección postal".. AYUDA PORFA !!

23. franco o 05 Set 2016 ás 20:24:13

Hola ! no logro hacerlo funcionar, alguien tiene el codigo completo en html con el que lo hizo funcionar?

24. Anónimo o 16 Out 2016 ás 16:39:56

Hola.

Yo tengo un par de coordenadas y lo único que necesito es que de cada par de coordenadas me indique en que país se encuentran?. Alguien por favor me puede ayudar con esto?

Gracias.

26. Fernando Gabriel S o 24 Out 2016 ás 17:49:56

No les funciona porque Chrome desactivó la geolocalización en el navegador, necesitarán usar otro navegador o mplementar ssl en su sitio para que funcione.

27. Miquel Garcia o 10 Nov 2016 ás 14:09:52

Hola, necesito obtener un listado de comercios ordenados por proximidad a un código postal determinado. Por supuesto estos comercios estarían en una tabla con sus correspondientes códigos postales.

28. javier soto avila o 25 Feb 2017 ás 22:41:23

disculpa si tengo 100 choferes por decir un número en la bd en My SQL tengo sus ID y No de teléfono celular sería posible saber la ubicación de ellos con este código o saber quien anda más cerca.? o podrias echarme la mano con un código para esto !!

Comentar

Comentar de forma anónima

Podes comentar poñendo calquera nome ou alcume, exceptuando os nomes de usuarios rexistrados. Máximo de 50 caracteres.

Comentar como usuario rexistrado

Rexistrarse. Esqueceches o teu contrasinal?