Foros del Web » Programando para Internet » Javascript »

problema con funcion

Estas en el tema de problema con funcion en el foro de Javascript en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function get_lat ( ) { if ( navigator. geolocation ) { navigator. geolocation . getCurrentPosition ( function ( ...
  #1 (permalink)  
Antiguo 14/12/2010, 15:32
50l3r
Invitado
 
Mensajes: n/a
Puntos:
problema con funcion

Código Javascript:
Ver original
  1. function get_lat(){
  2. if(navigator.geolocation) {
  3. navigator.geolocation.getCurrentPosition(function(position) {
  4. var lat = position.coords.latitude;var lon = position.coords.longitude;
  5. var latlon = lat + ',' + lon;
  6. return latlon;
  7. });
  8. }
  9. }

alguien me pede decir porque no retorna el valor?
  #2 (permalink)  
Antiguo 14/12/2010, 15:40
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: problema con funcion

Hola:

Prueba con un else, porque no todos los navegadores entran en el if (al menos ff no lo soporta)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 14/12/2010, 15:42
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con funcion

Código Javascript:
Ver original
  1. function get_lat(){
  2.                                         if(navigator.geolocation) {
  3.                                             navigator.geolocation.getCurrentPosition(function(position) {
  4.                                                 var lat = position.coords.latitude;var lon = position.coords.longitude;
  5.                                                 var latlon = lat + ',' + lon;
  6.                                                 return latlon;
  7.                                             });
  8.                                         }else{
  9.                                             return '43.1240408441236, -3.87542724609375';
  10.                                         }
  11.                                     }

undefined

el caso es que hago un alert antes de retornar el valor y si que entra, y encima toy usando firefox

la localizacion me la coge, pero el maldito valor no se retorna
  #4 (permalink)  
Antiguo 14/12/2010, 16:20
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: problema con funcion

No obtienes nada porque tu return esta en un callback.

Si quieres usar ese valor tienes que trabajarlo de otra forma.

@caricatos, FF soporta geolocalizacion desde el 3.5.
  #5 (permalink)  
Antiguo 14/12/2010, 16:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: problema con funcion

Cita:
Iniciado por snahor_ Ver Mensaje
...@caricatos, FF soporta geolocalizacion desde el 3.5.
Hola:

Pues ahora veo que hoy estoy navegando con chrome... aunque con ff uso una versión portable que tal vez sea anterior a la que mencionas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 15/12/2010, 04:29
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 11 meses
Puntos: 53
Respuesta: problema con funcion

Tienes que usar un callback ya que el método getCurrentPosition ejecuta una llamada asincrona a los servicios de posicionamiento. Yo haría algo así:

Código Javascript:
Ver original
  1. var Geolocation = {
  2.  
  3.       getPosition : function(options){
  4.             options.scope = options.scope || window;
  5.  
  6.             if(navigator.geolocation) {
  7.                   navigator.geolocation.getCurrentPosition(function(position) {
  8.                         options.success.call(options.scope,position.coords);
  9.                   });
  10.             }else{
  11.                   options.failure.call(options.scope);
  12.                   //quizas disparar un error....
  13.                   //throw Error("Tu navegador no soporta geolocalización, intenta actualizarlo");
  14.             }
  15.       }
  16.  
  17. };
  18.  
  19.  
  20. //forma de uso
  21. Geolocation.getPosition({
  22.       success : function(coords){console.debug(coords);},
  23.       failure  : function(){console.debug(error!!);}
  24. });


Saludos

Etiquetas: funcion
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 16:05.