(Solucionado) No consigo asignar valor a una variable en javascript

Iniciado por Pantera80, 12 Febrero 2016, 20:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Pantera80

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 (javascript) [Seleccionar]
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]) {
                               
                               direccion = results[0].formatted_address.toString();
                               /*ESTE ALERT PINTA BIEN LA DIRECCION */
                               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;
     
   }

Pantera80

#1
He conseguido averiguar la solución a mi problema

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 (javascript) [Seleccionar]

/********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 (javascript) [Seleccionar]

//****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()***************************************/