Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/02/2016, 10:39
Avatar de Pantera80
Pantera80
 
Fecha de Ingreso: noviembre-2014
Ubicación: España
Mensajes: 35
Antigüedad: 10 años, 1 mes
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; 
       
    }