Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Pantera80 en 12 Febrero 2016, 20:10 pm



Título: (Solucionado) No consigo asignar valor a una variable en javascript
Publicado por: Pantera80 en 12 Febrero 2016, 20:10 pm
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
  1. function calcularMiUbicacion(){
  2.        debugger;
  3.        var direccion='';
  4.        var output = document.getElementById("out");
  5.  
  6.  
  7.        if(!navigator.geolocation){
  8.  
  9.            output.innerHTML="<p>Tu navegador no soporta Geolocalización</p>";
  10.            return;
  11.        }
  12.  
  13.        function success(position){
  14.            debugger;
  15.            alert('Estoy en success');    
  16.            var latitud = position.coords.latitude;
  17.            var longitud = position.coords.longitude;
  18.            var direccion='';
  19.  
  20.  
  21.            var geocoder = new google.maps.Geocoder;
  22.            var latlng = {
  23.                lat:latitud ,
  24.                lng: longitud
  25.            };
  26.            geo =geocoder.geocode(
  27.                {'location': latlng},
  28.                function(results, status) {
  29.  
  30.                        if (status === google.maps.GeocoderStatus.OK) {
  31.                            if (results[0]) {
  32.  
  33.                                direccion = results[0].formatted_address.toString();
  34.                                /*ESTE ALERT PINTA BIEN LA DIRECCION */
  35.                                alert('direccion: '+direccion);
  36.  
  37.  
  38.                            } else {
  39.                                window.alert('No results found');
  40.                            }
  41.                        } else {
  42.                            window.alert('Geocoder failed due to: ' + status);
  43.                        }
  44.  
  45.  
  46.                });
  47.  
  48.  
  49.        }          
  50.  
  51.        function error(){
  52.            alert('Incapaz de conseguir tu ubicación');
  53.            output.innerHTML="Incapaz de conseguir tu ubicación";
  54.        }
  55.  
  56.        direccion = navigator.geolocation.getCurrentPosition(success,error);
  57.        return direccion;
  58.  
  59.    }
  60.  


Título: Re: No consigo asignar valor a una variable en javascript
Publicado por: Pantera80 en 22 Febrero 2016, 20:43 pm
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
  1. /********calcularMiUbicacion()*************************************/
  2.    function calcularMiUbicacion(){
  3.  
  4.        if(!navigator.geolocation){
  5.            alert('Tu navegador no soporta geolocalización');
  6.            return;
  7.        }
  8.  
  9.        function success(position){
  10.  
  11.            var latitud = position.coords.latitude;
  12.            var longitud = position.coords.longitude;
  13.  
  14.            var lat = parseFloat(latitud);
  15.            var lng = parseFloat(longitud);
  16.  
  17.            var latlng = {
  18.                lat:lat ,
  19.                lng: lng
  20.            };            
  21.            origen = latlng;
  22.  
  23.            calcularRuta();                    
  24.  
  25.        }          
  26.  
  27.        function error(){
  28.            alert('Incapaz de conseguir tu ubicación');
  29.        }
  30.  
  31.        navigator.geolocation.getCurrentPosition(success,error);
  32.  
  33.  
  34.    }
  35.  
  36.    /********Fin calcularMiUbicacion()*************************************/
  37.  
  38.  


Y aquí creo la ruta:
Código
  1. //****calcularRuta()**************************
  2.    function calcularRuta(){
  3.  
  4.        var request = {
  5.             origin: origen,
  6.             destination: destino,
  7.             travelMode: google.maps.DirectionsTravelMode[$('#modo_viaje').val()],
  8.             unitSystem: google.maps.DirectionsUnitSystem[$('#tipo_sistema').val()],
  9.             provideRouteAlternatives: true
  10.        };
  11.  
  12.        directionsService.route(request, function(response, status) {
  13.            if (status === google.maps.DirectionsStatus.OK) {
  14.                directionsDisplay.setMap(map);
  15.                directionsDisplay.setPanel($("#panel_ruta").get(0));
  16.                directionsDisplay.setDirections(response);
  17.            } else {
  18.                    alert("No existen rutas entre ambos puntos");
  19.            }
  20.        });
  21.    }
  22.    /******Fin calcularRuta()***************************************/
  23.