Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Sacar valor de variable de una función de geolocalización

Estas en el tema de Sacar valor de variable de una función de geolocalización en el foro de Javascript en Foros del Web. Hola a todos, y gracias de antemano por ayudarme. Estoy trabajando en una web donde necesito saber la dirección del usuario para crear una ruta ...
  #1 (permalink)  
Antiguo 12/02/2016, 10:39
Avatar de Pantera80  
Fecha de Ingreso: noviembre-2014
Ubicación: España
Mensajes: 35
Antigüedad: 10 años
Puntos: 6
Pregunta Sacar valor de variable de una función de geolocalización

Hola a todos, y gracias de antemano por ayudarme.

Estoy trabajando en una web donde necesito saber la dirección del usuario para crear una ruta de su localización hasta la del cliente.

Hasta ahora he conseguido trazarla cuando el usuario introduce una dirección, pero me gustaría que esto funcionase para poner el típico botón de "Usar mi localización actual"

El problema en concreto que tengo es que, como indico en el código, consigo la dirección y la pinto en un alert, pero sin embargo la variable "direccion" me aparece todo el rato, incluso en depuración como UNDEFINED.

Agradezco cualquier ayuda, gracias

Código:
function calcularMiUbicacion(){
        debugger;
        var direccion='';
        var output = document.getElementById("out");
        
        
        if(!navigator.geolocation){
             
            output.innerHTML="<p>Tu navegador no soporta Geolocalización</p>";
            return;
        }
        
        function success(position){
            debugger;
            alert('Estoy en success');    
            var latitud = position.coords.latitude;
            var longitud = position.coords.longitude;
            var direccion='';
            
            
            var geocoder = new google.maps.Geocoder;
            var latlng = {
                lat:latitud ,
                lng: longitud
            };
            geo =geocoder.geocode(
                {'location': latlng},
                function(results, status) {
                    
                        if (status === google.maps.GeocoderStatus.OK) {
                            if (results[0]) {
                                //Aquí tenemos la direccion(probado)
                                direccion = results[0].formatted_address.toString();
                                 Este alert pinta BIEN la dirección                       
                                alert('direccion: '+direccion);
                                
                                
                            } else {
                                window.alert('No results found');
                            }
                        } else {
                            window.alert('Geocoder failed due to: ' + status);
                        }
             
           
                });
            
              
        }          
          
        function error(){
            alert('Incapaz de conseguir tu ubicación');
            output.innerHTML="Incapaz de conseguir tu ubicación";
        }
        
        direccion = navigator.geolocation.getCurrentPosition(success,error);
        return direccion; 
       
    }
  #2 (permalink)  
Antiguo 15/02/2016, 06:53
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Sacar valor de variable de una función de geolocalización

No entiendo... tu dices que direccion aparece UNDEFINED pero en el código dices que en el alert lo pinta bien xD


Ahora si tu problema es en

Código Javascript:
Ver original
  1. direccion = navigator.geolocation.getCurrentPosition(success,error);
  2.         return direccion;


debes depurar y revisar que trae esta llamada

Código Javascript:
Ver original
  1. navigator.geolocation.getCurrentPosition(success,error);
  #3 (permalink)  
Antiguo 22/02/2016, 13:41
Avatar de Pantera80  
Fecha de Ingreso: noviembre-2014
Ubicación: España
Mensajes: 35
Antigüedad: 10 años
Puntos: 6
Respuesta: Sacar valor de variable de una función de geolocalización

Perdona ZedGe1505 por tardar tanto en contestar, pero quería estar seguro antes.

He depurado a tope y no he conseguido saber dónde había fallado. Así que decidí cambiar el planteamiento de la función y en vez de basarme en la dirección del usuario lo he hecho en sus coordenadas (mucho más fáciles de obtener). Así queda la cosa:

Aquí consigo las coordenadas del usuario:

Código:
/********calcularMiUbicacion()*************************************/
    function calcularMiUbicacion(){
                
        if(!navigator.geolocation){
            alert('Tu navegador no soporta geolocalización'); 
            return;
        }
                            
        function success(position){
                    
            var latitud = position.coords.latitude;
            var longitud = position.coords.longitude;
            
            var lat = parseFloat(latitud);
            var lng = parseFloat(longitud);
                                
            var latlng = {
                lat:lat ,
                lng: lng
            };            
            origen = latlng;
           
            calcularRuta();                     
                                    
        }          
          
        function error(){
            alert('Incapaz de conseguir tu ubicación');
        }
        
        navigator.geolocation.getCurrentPosition(success,error);
                       
               
    }
    
    /********Fin calcularMiUbicacion()*************************************/

Y aquí creo la ruta:
Código:
//****calcularRuta()**************************
    function calcularRuta(){
        
        var request = {
             origin: origen,
             destination: destino,
             travelMode: google.maps.DirectionsTravelMode[$('#modo_viaje').val()],
             unitSystem: google.maps.DirectionsUnitSystem[$('#tipo_sistema').val()],
             provideRouteAlternatives: true
        };
                
        directionsService.route(request, function(response, status) {
            if (status === google.maps.DirectionsStatus.OK) {
                directionsDisplay.setMap(map);
                directionsDisplay.setPanel($("#panel_ruta").get(0));
                directionsDisplay.setDirections(response);
            } else {
                    alert("No existen rutas entre ambos puntos");
            }
        });
    }
    /******Fin calcularRuta()***************************************/

Última edición por Pantera80; 22/02/2016 a las 13:48

Etiquetas: funcion, geolocalización, valor, variable
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 07:28.