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