![]() |
|
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Variable TIEMPO RESTANTE en Maps
A partir de las aportaciones de otros Taskers he creado una tarea, a la que he nombrado MONITOREO.
JUSTIFICACIÓN: Son muchas las horas que conduzco y a menudo a horas intempestivas y cansado despues de jornadas maratonianas. Como muchos, tengo una mujer sufridora, la cual agradece un mensaje automático conforme sigo mi ruta hacia casa. PERFIL: He definido un perfil, que se activa cada diez minutos y siempre que la variable %Monitoreo sea 1, valor que se cambia a partir de apretar un boton en una escena, modificada a partir del proyecto de Cace0353 (http://www.htcmania.com/showthread.php?t=813695). Con ello puedo decidir cuando se envia o cuando no se envia el mensaje automático. TAREA Una primera subtarea, basada en la tarea BUSCAR POSICIÓN del mismo compañero, me establece la posición y la localización en coordenadas. Puesto que la primera subtarea supone algo de tiempo, pongo en espera unos 50 segundos la tarea principal. Por último, mediante WHATSTASKER SEND MESSAGE, envio un mensaje, con el siguente texto "Son las %HoraGPS. Estoy en %Nomlloc Coordenadas: %Lloc Enlace: http://maps.google.com/maps?q=loc.%Lloc Velocidad: %LOCSPD*3,6 Km/h" Las variables %HoraGPS, %Nomlloc y %Lloc provienen de la subtarea BUSCAR POSICIÖN anterior, y definen la hora en la que se ha obtenido la posición, el resultado de localización (calle, población, o en su caso las cooredenadas), las coordenadas GPS, un enlace que permite visualizar el punto concreto sobre el mapa, y por último la VELOCIDAD a la que voy en el momento de obtener la posición (puesto que la variable se expresa em m/sg, hago la conversión a Km/h, multiplicando el valor de la variable por 3,6) Con ello consigo tranquilizar la parienta, eso si, si ve dos mensajes consecutivos con la misma localización y con velocidad cero...significa llamada segura! Quisiera avanzar un poco mas, y puesto que, mientras conduzco, siempre me guio con el MAPS, quisiera poder poner en el mensaje la HORA ESTIMADA de llegada a casa, que en la última versión del MAPS aparece en el margen inferior derecho. ¿Alguien sabe que VARIABLE INTERNA utiliza el MAPS para este dato? ¿Tengo que hacer un INTENT? Gracias por leer el rollo, y desde aquí agradecer una vez mas al compañero que compartió el proyecto de ayuda de navegación. |
Gracias de parte de: | ||
|
#2
|
||||
|
||||
En primer lugar quiero felicitarte por la excelente introducción y explicación de todo el asunto, incluyendo el reconocimiento a Cace0353 y el enlace a su post, y también por no limitarte a hacer la pregunta: aportas tu trabajo como pista para que otros compañeros podamos enriquecernos de ello. Excelente.
Respecto a la pregunta... no conozco la respuesta pero me temo que no va a ser fácil. Ese valor de tiempo estimado de llegada es un dato interno de Maps y -en principio- no me parece fácil que Tasker pueda consultarlo u obtenerlo. Yo haría algunas búsquedas por Internet para investigar si Maps tiene algún mecanismo para poder consultar ese tipo de información; si dominas el inglés tienes más posibilidades con esas búsquedas. Ojalá algún otro compañero te pueda dar una ayuda más concreta. Entretanto, quizá te sirva de consuelo o de aproximación, otro dato. Sabiendo las coordenadas de ambos puntos (dónde estás y dónde está tu casa), Tasker puede calcular fácilmente la distancia (en línea recta) entre ambas posiciones. Es una aproximación muy tosca, pero es mejor que nada. Si te interesa el tema, puedes obtener más detalles en el post siguiente: http://www.htcmania.com/showpost.php...8&postcount=35 |
Gracias de parte de: | ||
#3
|
||||
|
||||
Gracias Caravantes, llevo tiempo leyendo vuestras aportaciones, y puesto que trabajamos con elementos LÓGICOS, el sentido común indica que para facilitar la comprensión utilicemos tambien orden y lógica. Para solucionar cualquier problema lógico siempre se ha de seguir el esquema Datos-Incógnitas-Planteamiento-Resultado.
Como muy bien dices si tenemos la distancia a RECORRER (la subtarea UbicDistancia, desde el punto actual hasta el destino) y una distancia RECORRIDA (la misma subtarea desde el punto de inicio hasta el punto actual), sabiendo la HORA DE INICIO y la HORA ACTUAL, podemos establecer una VELOCIDAD MEDIA, y con ella y la primera distancia, establecer una HORA ESTIMADA DE LLEGADA... Trabajo en ello y os propongo planteamientos...sin dejar cerradas "otras líneas de investigación" |
#4
|
Caravantes te acuerdas de lo que "descubrí" de que te dijera el nombre de la calle con http get creo y que resulta que tu ya sabias hace tiempo?
Con eso no seria posible? EDITO: Aquí esta el hilo: http://www.htcmania.com/showthread.php?p=11651526 Mirate también el post 4 donde Caravantes me rompe el corazon y pone los links al hilo donde esto ya estaba resuelto. La idea es que si esto se puede quizá lo que tu quieres hacer también. Última edición por mlesir Día 09/10/14 a las 22:55:16 |
Los siguientes 2 usuarios han agradecido a mlesir su comentario: | ||
#5
|
||||
|
||||
Mlesir, creo que... lo que yo había descubierto anteriormente es que se podía obtener el nombre del lugar (calle, municipio, etc), a partir de las coordenadas. Pero la consulta de distancias y tiempos de trayectos, eso creo que lo descubriste tú... y yo ni me acordaba de ello, has hecho bien en refrescarnos la memoria con esa URL.
Cita:
Es posible acceder a los servicios web del API de Google Maps, utilizando una consulta HTTP GET. Por ejemplo, para consultar el recorrido desde las coordenadas 39.867941,-4.028206 (Toledo) al punto 40.414305,-3.693956 (Madrid) se utilizaría una URL del tipo siguiente: Código:
http://maps.googleapis.com/maps/api/directions/json?origin=39.867941,-4.028206&destination=40.414305,-3.693956 http://maps.googleapis.com/maps/api/...4305,-3.693956 Mirando la información devuelta por el servidor se puede ver que la distancia por carretera es de 72,0 km y el tiempo previsto es de 50 min (en coche). Código:
"distance" : { "text" : "72,0 km", "value" : 71950 }, "duration" : { "text" : "50 min", "value" : 2996 https://developers.google.com/maps/d...ions/#Audience Última edición por Caravantes Día 10/10/14 a las 23:44:27 |
#6
|
Grande Caravantes!
Solo añadir que en realidad creo recordar que puedes sacar toda la información q podrías obtener de maps, incluso atascos, densidad de trafico, peajes, etc. Pues ala GSGGOMSAU ! Todo tuyo y espero que publiques el perfil cuando lo tengas. |
Los siguientes 2 usuarios han agradecido a mlesir su comentario: | ||
#7
|
||||
|
||||
Estoy babeando....no puedo decir nada mas!
|
Gracias de parte de: | ||
#8
|
|
Cita:
Yo también espero tu perfil SGSGOMSAU |
#9
|
||||
|
||||
De momento os comento un avance. Voy a utilizar el API de matriz de distancia de Google, puesto que el xml que me devuelve el API de rutas me especifica para cada etapa de rutas, y puesto que el número de etapas depende de cada viaje, no va a ser comodo para la posterior separación de las variables.
Con ello, usando un HTTPGET de la siguiente dirección: http://maps.googleapis.com/maps/api/distancematrix/xml?origins=%Lloc&destinations=%Dest&sensor=true, donde %Lloc son las coordenadas actuales y %Dest las coordenadas de destino, con ello obtengo un xml mas cómodo, como el que se indica: <?xml version="1.0" encoding="UTF-8" ?> - <DistanceMatrixResponse> <status>OK<status> <origin_address>Carrer de la Canuda, 30-32, 08002 Barcelona, Barcelona, Espanya<origin_address> <destination_address>Avinguda Portal de l'Àngel, 70, 08002 Barcelona, Barcelona, Espanya<destination_address> - <row> - <element> <status>OK<status> - <duration> <value>6<value> <text>1 minut<text> <duration> + <distance> <value>27<value> <text>27 m<text> <distance> <element> <row> <DistanceMatrixResponse> Por lo que será fácil obtener el valor en segundos del TIEMPO ESTIMADO DE RUTA, separando la variable resultado a partir de los textos "value>" y "<value>" que añadiré matemáticamente a la hora actual (en el ejemplo son 6 segundos). Una segunda separación con los mismos textos "value>" y "<value>" me devolverá un segundo valor, expresado en metros, que es la DISTANCIA A RECORRER, por lo que el mensaje se puede completar con el número de KILÓMETROS HASTA DESTINO (en el ejemplo son 27 metros). En cuanto tenga algo de tiempo, pondré negro sobre blanco. Última edición por SGSGOMSAU Día 16/10/14 a las 20:26:55 |
#10
|
|
Cita:
Por ejemplo, para extraer esos 2 valores que quieres (distancia en metros y tiempo en segundos hasta el destino) puedes hacerlo así: Código:
PruebaTiempoRestante (89) A1: HTTP Get [ Server:Port:http://maps.googleapis.com/maps/api/...56&language=es Path: Attributes: Cookies: User Agent: Timeout:10 Mime Type: Output File: Trust Any Certificate:Off ] A2: JavaScriptlet [ Code:var data = JSON.parse(global('HTTPD')); if(!data.routes[0] || !data.routes[0].legs[0]) { flash('no se ha encontrado una ruta'); return; } var ruta = data.routes[0].legs[0]; var distancia = ruta.distance.value; var tiempo = ruta.duration.value; Libraries: Auto Exit:On Timeout (Seconds):45 ] A3: Flash [ Text:Quedan %distancia metros (%tiempo segundos) Long:Off ] en la segunda está el codigo javascript, que convierte ese JSON en un objeto, comprueba que exista una ruta en el resultado y extrae a las variables %distancia y %tiempo los elementos "distance.value" y "duration.value" respectivamente (pego el código javascript suelto para que se lea mejor) Código:
var data = JSON.parse(global('HTTPD')); if(!data.routes[0] || !data.routes[0].legs[0]) { flash('no se ha encontrado una ruta'); return; } var ruta = data.routes[0].legs[0]; var distancia = ruta.distance.value; var tiempo = ruta.duration.value; De esta misma forma puedes sacar y recorrer todos los datos que devuelve el api, como recorrer los pasos de la ruta o cualquier cosa, tambien puedes hacerlo con el api de distancematrix, de hecho será más rápido y consumirá menos datos porque la respuesta es más corta, si tienes dudas comentalo y te echo un cable ![]() Última edición por maid450 Día 22/10/14 a las 21:12:33 |
Los siguientes 4 usuarios han agradecido a maid450 su comentario: | ||
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
Herramientas | |
|
|
Hora actual: 00:55:51 (GMT +2)
HTCMania: líderes desde el 2007