Foros del Web » Programando para Internet » Jquery »

Usando API de google maps para geolocalizacion

Estas en el tema de Usando API de google maps para geolocalizacion en el foro de Jquery en Foros del Web. Hola como estais amigos, Vereis estoy usando la api de Google maps hacer una geolocalizacion y funciona bien, lo que pasa es que me gustaria ...
  #1 (permalink)  
Antiguo 09/01/2013, 05:35
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 8 meses
Puntos: 4
Usando API de google maps para geolocalizacion

Hola como estais amigos,


Vereis estoy usando la api de Google maps hacer una geolocalizacion y funciona bien, lo que pasa es que me gustaria que refrescase las coordenadas cada x segundos, tal y como esta el codigo funciona pero no se por que en lugar de refrescar el mapa que muestra coloca otro mapa al lado con las nuevas coordenadas osea que cada vez que refresca coloca un mapa mas con lo que al final tenemos el navegador lleno de mapas.

A ver si alguien sabe como podriamos solucionar esto

Este es el codigo:;

Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <!--<meta http-equiv="refresh" content="30">-->
  3. </head>
  4. <body onload="javascript:obtener_localizacion();">
  5. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
  6. <script language="javascript">
  7.  
  8. var intevalo = setInterval('obtener_localizacion()',1000);
  9.  
  10. function obtener_localizacion() {
  11.   if (navigator.geolocation) {
  12.         navigator.geolocation.getCurrentPosition(mostrar_mapa,gestiona_errores);
  13.   }else{
  14.     alert('Tu navegador no soporta la API de geolocalizacion');  
  15.   }
  16. }
  17. function mostrar_mapa(position) {
  18.   var latitud = position.coords.latitude;
  19.   var longitud = position.coords.longitude;
  20.   var image_url = "http://maps.google.com/maps/api/staticmap?sensor=false&center=" + latitud + "," +
  21.                    longitud + "&zoom=14&size=300x400&markers=color:red|label:P|" +
  22.                    latitud + ',' + longitud;
  23.     $(document.body).append(
  24.         $(document.createElement("img")).attr("src", image_url).attr('id','map')
  25.     );
  26.  
  27. }
  28. function gestiona_errores(err) {
  29.   if (err.code == 0) {
  30.     alert("error desconocido");
  31.   }
  32.   if (err.code == 1) {
  33.     alert("El usuario no ha compartido su posicion");
  34.   }
  35.   if (err.code == 2) {
  36.     alert("no se puede obtener la posicion actual");
  37.   }
  38.   if (err.code == 3) {
  39.     alert("timeout recibiendo la posicion");
  40.   }
  41. }
  42.  
  43. <p><a href="javascript:obtener_localizacion();">Mostrar Posici&oacute;n</a></p>
  44. </body>
  45. </html>


Como podeis ver lo que hago es llama a la funcion que obtiene las cordenadas cada x segundos, y la funcion mostrar_mapa lo que esta haciendo es crear una imagen con la localizacion, se podria poner un style en esta funcion y que cada vez que crease una imagen con position:absolute; y top:100; por ejemplo las colocase una encima de otra asi solo se veria la ulitma localizacion.

A ver si alguien sabe

Bueno un saludo

Última edición por franjgg; 09/01/2013 a las 05:49
  #2 (permalink)  
Antiguo 09/01/2013, 09:26
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usando API de google maps para geolocalizacion

franjgg:

Al crear el elemento lo haces cada vez que solicitas obtener_localizacion() sin borrar el anterior, por lo que te crea mapas sucesivos.

Algo sencillo (incluso prescindiendo de jQuery) puede ser esto:

Código Javascript:
Ver original
  1. var mapa = document.getElementById("mapa");
  2.   mapa.innerHTML = "<img src="+ image_url +">";
y en el <body> creas el div "mapa
Código HTML:
Ver original
  1. <div id="mapa"></div>

Con alguna pequeña modificación (declaración de caracteres, el script en el <head> y otra forma de definición de errores) el código de la página puede ser este:
Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  3. <title>Mi mapa</title>
  4. <script language="javascript">
  5. var intevalo = setInterval('obtener_localizacion()',10000);
  6. function obtener_localizacion() {
  7.   if (navigator.geolocation) {
  8.         navigator.geolocation.getCurrentPosition(mostrar_mapa,gestiona_errores);
  9.   }else{
  10.     alert('Tu navegador no soporta la API de geolocalizacion');  
  11.   }
  12. }
  13. function mostrar_mapa(position) {
  14.   var latitud = position.coords.latitude;
  15.   var longitud = position.coords.longitude;
  16.   var image_url = "http://maps.google.com/maps/api/staticmap?sensor=false&center=" + latitud + "," +
  17.                    longitud + "&zoom=14&size=300x400&markers=color:red|label:P|" +
  18.                    latitud + ',' + longitud;
  19.   var mapa = document.getElementById("mapa");
  20.   mapa.innerHTML = "<img src="+ image_url +">";
  21. }
  22. function gestiona_errores(err) {
  23.   if (error.core == error.PERMISSION_DENIED) {
  24.     alert("El usuario no ha concedido los privilegios de geolocalización");
  25.   } else if (error.core == error.POSITION_UNAVAILABLE) {
  26.     alert("Posicion no disponible");
  27.   } else if (error.core == error.TIMEOUT) {
  28.     alert("Demasiado tiempo intentando obtener la localización del usuario.");
  29.   } else if (error.core == error.UNKNOWN) {
  30.     alert("Error desconocido");
  31.   } else {
  32.     alert("Error insesperado");
  33.   }
  34. }
  35. <!--<meta http-equiv="refresh" content="30">-->
  36. </head>
  37. <body onload="javascript:obtener_localizacion();">
  38. <p><a href="javascript:obtener_localizacion();">Mostrar Posición</a></p>
  39. <div id="mapa"></div>
  40. </body>
  41. </html>
Pueden existir otras formas de corrección del código.
  #3 (permalink)  
Antiguo 09/01/2013, 09:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Usando API de google maps para geolocalizacion

Hola amigo, gracias por tu respuesta

Acabo de probar las modificaciones pero en este caso ahora parece que no funciona, en lugar del mapa muestra una imgen que parece de google maps para mostrar errores y tal.

Parece que no soporta la modificacion o hay algo que se me escapa

Un saludo y muchas gracias amigo
  #4 (permalink)  
Antiguo 09/01/2013, 09:52
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usando API de google maps para geolocalizacion

Si pasa a los errores es porque no admite la geolocalización.

Yo lo he probado ahora mismo en Firefox 17.0.1 e Explorer 9

De hecho estas usando una imagen de Google Maps, no su API (no estamos construyendo el mapa sino que estamos pasando la imagen
Código HTML:
Ver original
  1. "http://maps.google.com/maps/api/staticmap?sensor=false&center=" + latitud + "," +
  2.                    longitud + "&zoom=14&size=300x400&markers=color:red|label:P|"
donde los valores de latitud y longitud varían de acuerdo a la ubicación del usuario (geolocalización de W3C http://dev.w3.org/geo/api/spec-source.html)

Por cierto (un lapsus por mi parte), para que valide la etiqueta, mejor si cambias
Código Javascript:
Ver original
  1. mapa.innerHTML = "<img src="+ image_url +" alt="mapa" />";

Etiquetas: ajax, api, funcion, google, html, javascript, js, maps, usando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:43.