Autor Tema: Como geolocalizar al usuario y crear una ruta a punto usando el api Google Maps  (Leído 7846 veces)

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Hola, como podréis comprobar no estoy muy puesto, y un poco liado, a ver si me podéis ayudar a resolver este problemilla.

Os cuento lo que estoy tratando de hacer… la página tiene que ser HTML, para poder crear luego una aplicación para Android, que tome por un lado las coordenadas del usuario donde se encuentra en ese momento, y luego desde una lista que seleccione una opción, esa opción tiene otras coordenadas.

He conseguido poner en una variable las coordenadas del usuario, no sé cómo poner en otra variable las otras coordenadas de la Lista.

Luego una vez que tenga las dos coordenadas, que las meta el Google Maps Navigation para iniciar el viaje.

Esto es lo que tengo creado en HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="es-es">
<head>
<title>Mapa</title>
<meta charset="utf-8">
</head>
<body>

    <script type="text/javascript">

    navigator.geolocation.getCurrentPosition( fn_ok, fn_error );
    var divMapa = document.getElementById('mapa');
    function fn_error() {
    divMapa.innerHTML = 'hay un problema al solicitar los datos';
    }
    function fn_ok( respuesta ){
    var lat = respuesta.coords.latitude;
    var lon = respuesta.coords.longitude;
   
divMapa.innerHTML = lat+','+lon;
    }
</script>

<form>
<label for="coordenadas">Capitales</label>
<select name="coor">
   <option selected value="0"> Elige un ciudad</option>
       <optgroup label="Listado 1">
        <option value="40.429507, -3.702206">Madrid</option>
        <option value="38.345720, -0.490034">Alicante</option>
        <option value="xxxxxx">Opción 3</option>
    </optgroup>
    <optgroup label="Lilstado 2">
        <option value="xxxxxx">Opción 4</option>
        <option value="xxxxxx">Opción 5</option>
        <option value="xxxxxx">Opción 3¡6</option>
    </optgroup>
 </select>
</form>

<a href="http://maps.google.com/maps?saddr=lat+','+lon&daddr=38.345720, -0.490034">Mostrar ruta</a>

</body>
</html>

P.D. el segundo valor de las coordenadas es donde tendría que ir las de la Lista, pero lo he puesto así para comprobar el resultado.

Gracias anticipadas.

« Última modificación: 15 de Abril 2017, 20:17 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #1 en: 18 de Febrero 2017, 15:22 »
Buenas Socu.

Te dejo este código haber si no te he entendido mal y te vale:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="es-es">
<head>
<title>Mapa</title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function() {

    navigator.geolocation.getCurrentPosition(fn_ok, fn_error);
}

    function fn_error() {
    var divMapa = document.getElementById('mapa');
    divMapa.innerHTML = 'hay un problema al solicitar los datos';
    }

    function fn_ok( respuesta ){
    var divMapa = document.getElementById('mapa');
    var select = document.getElementById('coor');
    var lat = respuesta.coords.latitude;
    var lon = respuesta.coords.longitude;
divMapa.innerHTML = lat + ', ' + lon;
select.addEventListener('change', function() {
var destino = select.value;
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
document.getElementById('ruta').href = enlace;
});
    }
</script>
</head>
<body>
<form>
<label for="coordenadas">Capitales</label>
<select name="coor" id="coor">
   <option selected value="1"> Elige un ciudad</option>
       <optgroup label="Listado 1">
        <option value="40.4165000,  -3.7025600">Madrid</option>
        <option value="38.3451700,  -0.4814900">Alicante</option>
        <option value="39.4697500,  -0.3773900">Valencia</option>
    </optgroup>
    <optgroup label="Lilstado 2">
        <option value="41.6560600, -0.8773400">Zaragoza</option>
        <option value="38.8778900, -6.9706100">Badajoz</option>
        <option value="37.3828300, -5.9731700">Sevilla</option>
    </optgroup>
 </select>
</form>

<a id="ruta" href="">Mostrar ruta</a>
<div id="mapa"></div>
</body>
</html>

Saludos. ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #2 en: 18 de Febrero 2017, 15:41 »
Hola pedro, no, no es ese el resultado que intento hacer.

Cuando en la Lista seleccione por ejemplo Madrid, esas coordenadas "40.4165000,  -3.7025600", las tiene que poner donde ahora yo las he puesto manualmente y estan de color Rojo.

<a href="http://maps.google.com/maps?saddr=lat+','+lon&daddr=40.4165000,  -3.7025600">Mostrar ruta</a>

Hacer lo mismo que están puestas las coordenadas que toma de la situación donde se encuentra el usuario, las que he puesto de color amarillo

P.D. que raro, no he recibido notificacion por correo.


Salu2.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #3 en: 18 de Febrero 2017, 15:55 »
En esta línea se crea el enlace de la misma forma que tu estás diciendo:

Código: [Seleccionar]
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
Cada vez que escojas una opción en el select, automáticamente se genera el nuevo enlace.


Saludos. ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #4 en: 18 de Febrero 2017, 16:04 »
No Pedro, bueno igual no te he llegado a entender, pero solo quiero meter en una variable la coordenadas que tiene la capital que escoja, seria solo 40.4165000,  -3.7025600.

En la variable que tu pones "var enlace =" tambien se entan metiendo las otros coordenadas " lat + ',' + lon"

Un saludo.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #5 en: 18 de Febrero 2017, 16:11 »
Justo encima de esa línea, se encuentra esta otra que es la que recoge las coordenadas del select seleccionado.

Código: [Seleccionar]
var destino = select.value;
 ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #6 en: 18 de Febrero 2017, 16:21 »
Creo que lo que estoy haciendo no es correcto, verdad  :-[

Código: [Seleccionar]
<script type="text/javascript">
function select()
var destino = select.value;
</script>

<a href="http://maps.google.com/maps?saddr=lat+','+lon&daddr=destino">Mostrar ruta</a>

Porque selecciono Alicante y me manda a Florida  :'(

Lo que convendría es que obligue a seleccionar una capital, para que no se pulse en "Mostrar ruta" sin antes seleccionar un destino para que no muestre una ruta incorrecta.


Un saludo.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #7 en: 18 de Febrero 2017, 16:33 »
Si tienes esta línea en el código html:
Código: [Seleccionar]
<a href="http://maps.google.com/maps?saddr=lat+','+lon&daddr=destino">Mostrar ruta</a>
El interprete html no sabe lo que vale lat, lon o destino, esto tienes que hacerlo desde JavaScript de ahí el modo en que yo lo realicé.

La función select() que has creado, si no la invocas desde algún sitio, nunca se ejecutará lo que tenga en su interior. Además que lo que pusiste dentro de la función es incorrecto, puesto que select tendrá un valor null puesto que no le asignaste nada con anterioridad.

Sigo pensando que lo que quieres hacer es lo mismo que yo hice, si no entiendes algo del código que creé, dímelo y te lo voy explicando.

 ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #8 en: 18 de Febrero 2017, 17:53 »
Pedro siento el retraso en responder, pero me han cortado ahorra que estaba metido en faena y he tenido que salir, te redondo desde el móvil, lo que he visto en el código que ha puesto es que aparecían las coordenadas en la página, y no se tienen que mostrar, por lo que he pensado que esa acción está para mostrar las coordenadas y no para trazar la ruta.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #9 en: 18 de Febrero 2017, 18:53 »
En el primer código que pegaste intentabas mostrar por pantalla las coordenadas de la ubicación del usuario:
Código: [Seleccionar]
divMapa.innerHTML = lat+','+lon;
o en caso de error, mostrar un mensaje:

Código: [Seleccionar]
divMapa.innerHTML = 'hay un problema al solicitar los datos';
Así que lo que hice fue crear un elemento div con id="mapa" al que hacías referencia en esta línea:

Código: [Seleccionar]
var divMapa = document.getElementById('mapa');
Aunque si no quieres que aparezcan por pantalla las coordenadas, se puede quitar, pero el div creado sería bueno que siguiese por si hace falta mostrar el mensaje de error.

Te dejo el script comentado para ver si lo entiendes mejor:

Código: [Seleccionar]
<script type="text/javascript">
window.onload = function() {
/* llamada al método getCurrrentPosition del objeto geolocation para
obtener la ubicación del usuario*/
    navigator.geolocation.getCurrentPosition(fn_ok, fn_error);
}

    function fn_error() {
    var divMapa = document.getElementById('mapa');
    divMapa.innerHTML = 'hay un problema al solicitar los datos';
    }

    function fn_ok(respuesta){
    var divMapa = document.getElementById('mapa');
    var select = document.getElementById('coor');
    var lat = respuesta.coords.latitude; // latitud actual del usuario
    var lon = respuesta.coords.longitude; // longitud actual del usuario
divMapa.innerHTML = 'Ubicación del usuario: ' + lat + ', ' + lon; // Se muestra por pantalla la ubicación actual del usuario

/* agregamos un manejador de eventos, para que cada vez que cambia la opción del
select (change) se cree el enlace con las coordenadas de la ubicación del usuario(lat y lon) y las
coordenadas del destino elegido en el select, y lo asignamos al atributo href del elemento
a que al pulsarlo se encargará de llevarnos hasta el maps de google con la ruta creada*/
select.addEventListener('change', function() {
var destino = select.value;
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
document.getElementById('ruta').href = enlace;
});
    }
</script>

Saludos. ;D
« Última modificación: 18 de Febrero 2017, 18:54 por pedro,, »

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #10 en: 19 de Febrero 2017, 07:30 »
Hola, ayer al final se lio la cosa, y tenia ganas ya de probarlo, así que para que no me pille el toro lo primero ha sido ponerme con ésto, pero llevo mas de una hora liado y no consigo que al pulsar en crear ruta me lleve al sitio.

La situación donde estoy aunque como la estoy probando en el ordenador no es muy exacta, pero ahora es que ni se aproxima a donde estoy, y luego como destino me pone Florida.

Incluso si pongo en href para que al pulsar muestre el mapa con la ruta el código que has puesto en la variable enlace

Código: [Seleccionar]
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
no me muestra la ruta correcta con el cambio del codigo que has puesto en el <script>
Código: [Seleccionar]
<a id="ruta" href="http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino">Mostrar ruta</a>
Y lo que has puesto aqui '+ lat + ',' + lon + ' tiene que ir entre comillas, o solo tiene que ir la coma.

Un saludo.
« Última modificación: 19 de Febrero 2017, 08:48 por SoCu »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #11 en: 19 de Febrero 2017, 11:28 »
¿Puedes pegar el código que estés utilizando?

Será más fácil ayudarte.

Saludos. ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #12 en: 19 de Febrero 2017, 11:47 »
Pedro no lo he puesto porque ahora mismo he borrado todo, bueno todo no, solo la parte donde se pone el boton para darle y que muestre la ruta, y seguro que al no mostrarme la ruta correcta estaba mal puesto el codigo, pero te pongo con los que he probado, igual ahora no lo pongo igual que antes

<a id="ruta" href="">Mostrar ruta</a>
<a id="ruta" href="http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino">Mostrar ruta 1</a>
<a id="ruta" href="http://maps.google.com/maps?saddr=lat + ',' + lon &daddr=' + destino">Mostrar ruta 1</a>
<a id="ruta" href="http://maps.google.com/maps?saddr=lat+ ',' +lon&daddr=destino">Mostrar ruta</a>

Tambien he probado tambien a poner las variables entre comillas, y me sigue dando destino Florida

Tambien les he quitado a las variables que estan en href signo +, por si lo que entendia era que tenia que poner las coordenadas tanto las del usuario como las del destino seguidas.


Un saludo.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #13 en: 19 de Febrero 2017, 12:03 »
Es lo que te dije anteriormente, el interprete html no sabe si esas variables tienen un valor u otro, para el html, lat valdrá lat, lon = lon, etc. Por eso cuando se abre el map te manda a culaquir lugar, no se si entiendes lo que te quiero decir, por eso hay que ayudarse de JavaScript. Lo normal es que tu html tenga esta línea:

Código: [Seleccionar]
<a id="ruta" href="">Mostrar ruta</a>
o una con unos valores por defecto, que pudiese ser esta:

Código: [Seleccionar]
<a id="ruta" href="http://maps.google.com/maps?saddr=40.4165000,  -3.7025600&daddr=41.6560600, -0.8773400">Mostrar ruta</a>
y mediante el script le des un valor al atributo href de esa línea, y esto se consigue con esta línea que teníamos en el script:

Código: [Seleccionar]
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
document.getElementById('ruta').href = enlace;

 ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #14 en: 19 de Febrero 2017, 12:20 »
Si Pedro, si esta linea es la primera que puse,

Código: [Seleccionar]
<a id="ruta" href="">Mostrar ruta</a>
pero me despisto y por eso empece hacer pruebas.

Cuando inicio el navegador lo primero que me muestra es un mensaje que me pregunta que si quiero compartir ubicación, le digo que si; despues selecciono de la lista por ejemplo Alicante, y pulso en "Mostrar ruta", pues no hace nada, me vuelve a mostrar el mensaje anterior pidiendo permiso para compartir ubicación.


Editado
Si a esta linea que era con la primera que empece hacer pruebas, la dejo asi:
Código: [Seleccionar]
<a href="http://maps.google.com/maps?saddr=lat+','+lon&daddr=38.345720, -0.490034">Mostrar ruta</a>
en donde pongo saddr=lat+','+lon, se introducen las coordenadas del usuario "si te fijas solo pongo entre comillas el coma ',' pero en el siguiente dato del destino es donde me fallaba porque no podia meter las coordenadas del destino.




« Última modificación: 19 de Febrero 2017, 12:25 por SoCu »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #15 en: 19 de Febrero 2017, 13:42 »
Yo he probado el código con varios navegadores y solo con safari no me funciona, con chrome y firefox si me funciona, me pregunta una vez y luego cuando pulso el botón me abre el google maps con la ruta seleccionada.

Mira a ver a probar otro navegador y me cuentas.

 ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #16 en: 19 de Febrero 2017, 14:02 »
Te voy a poner el codigo completo porque no me cueadra lo que me esta haciendo, con ningun navegador me funciona, ni firefox y opera me pide permiso para la ubicacion, con Opera no me pide nada, y con internet explorer cuando pulso en mostrar ruta lo que hace es abrirme la carpeta donde se encuentra el archivo html.

Código: [Seleccionar]
<!DOCTYPE html>
<html dir="ltr" lang="es-es">
<head>
<title>Mapa</title>
<meta charset="utf-8">
</head>
<body>

<script type="text/javascript">
window.onload = function() {
/* llamada al método getCurrrentPosition del objeto geolocation para
obtener la ubicación del usuario*/
    navigator.geolocation.getCurrentPosition(fn_ok, fn_error);
}

    function fn_error() {
    var divMapa = document.getElementById('mapa');
    divMapa.innerHTML = 'hay un problema al solicitar los datos';
    }

    function fn_ok(respuesta){
    var divMapa = document.getElementById('mapa');
    var select = document.getElementById('coor');
    var lat = respuesta.coords.latitude; // latitud actual del usuario
    var lon = respuesta.coords.longitude; // longitud actual del usuario
divMapa.innerHTML = 'Ubicación del usuario: ' + lat + ', ' + lon; // Se muestra por pantalla la ubicación actual del usuario

/* agregamos un manejador de eventos, para que cada vez que cambia la opción del
select (change) se cree el enlace con las coordenadas de la ubicación del usuario(lat y lon) y las
coordenadas del destino elegido en el select, y lo asignamos al atributo href del elemento
a que al pulsarlo se encargará de llevarnos hasta el maps de google con la ruta creada*/
select.addEventListener('change', function() {
var destino = select.value;
var enlace = 'http://maps.google.com/maps?saddr='+ lat + ',' + lon + '&daddr=' + destino;
document.getElementById('ruta').href = enlace;
});
    }
</script>

<form>
<label for="coordenadas">Capitales</label>
<select name="coor">
   <option selected value="0"> Elige un ciudad</option>
       <optgroup label="Listado 1">
        <option value="40.429507, -3.702206">Madrid</option>
        <option value="38.345720, -0.490034">Alicante</option>
        <option value="xxxxxx">Opción 3</option>
    </optgroup>
    <optgroup label="Lilstado 2">
        <option value="xxxxxx">Opción 4</option>
        <option value="xxxxxx">Opción 5</option>
        <option value="xxxxxx">Opción 6</option>
    </optgroup>
 </select>
</form>

<a id="ruta" href="">Mostrar ruta</a>

</body>
</html>


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #17 en: 20 de Febrero 2017, 00:24 »
Pues como te digo, a mi me funciona correctamente, no sabría decirte cual pudiese ser tu problema.

Podrías intentar revisar tus configuraciones sobre el acceso a la ubicación.

Saludos. ;D

SoCu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Re:Como seleccionar el valor de una lista desplegable
« Respuesta #18 en: 20 de Febrero 2017, 08:44 »
Hola Pedro, he probado con otro sistema y tampoco ha funcionado, mira tu mp a ver si a ti te funciona.

No se podria introducir las coordenadas que aparecen en la "Lista" de otra forma.

Como podria mostrar las coordenadas en pantalla para ver que es lo que se muestra igual como se hizo con las coordenadas del usuario, pero ahora con las de la Lista ?


P.D. se me olvido decirte que lo que te he enviado por mp, tendras que ampliarlo para poder ver el texto, me ha salido muy pequeño y no se porque.


Salu2.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".