Mostrar/Ocultar

 Inclinación de la vista al acercarnos al suelo 🗺️ Foros de Google Earth y Maps 🗺️ p73 🗺️


Foro de Programación de Google Earth y Maps Foro de Programación de Google Earth y Maps: Programación con las APIs de Google: Google Earth, Google Maps, KML, Aplicaciones Moviles
SubForos: Java - Kmz - Google Maps - Herramientas - Html - Javascript - Excel - Php - Programacion
Página 1 de 1 - Tema con 7 Mensajes y 23870 Lecturas
Último Mensaje:
Foro de Programación de Google Earth y Maps Ver más mensajes sobre Inclinación de la vista al acercarnos al suelo en el foro
Autor Mensaje

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
Hola Morta.

La interface GEOptions tiene una función "getAutoGroundLevelViewEnabled ()" que devuelve un booleano. Si lo estableces a false debería solucionarse.


code.google.com/ ...mbers.html

Ah, que no es que en GoogleEarth no se incline la vista al acercarte, es que hay que activarlo en Herramientas/Opciones/Pestaña de navegación.

Respecto a la exageración del terreno. Supongo que con la función de la misma interface "setTerrainExaggeration(double terrainExaggeration)" estableciendo el double a un valor de uno funcionará.

Si funciona, desde luego mejor solución esa que cargar una función en cada evento. Si no funciona, yo solo activaría el evento cuando estés por debajo de una altura determinada; es decir cuando empiece a inclinar la vista.

Un saludo y ya me cuentas.
Ir arriba _polifemo Compartir:

Morta
Veterano

Veterano
Registrado:
09-10-2008
Mensajes: 64

Votos: 0 👍
Responder citando
Hola de nuevo Polifemo
Muchas gracias por la respuesta.
He hecho una prueba rápida pero creo que no me funciona
He añadido esto al init

Ge.getOptions().setAutoGroundLevelViewEnabled(false);
Ge.getOptions().setTerrainExaggeration(0);

Y sigue inclinándose y saliendo el relieve exagerado (se que el mínimo es 1 pero en el programa le pones 0 y funciona, no sale exagerado)

Quizá es que no uso bien las funciones, como siempre la ayuda de GE es un poco escueta o yo no la entiendo bien
Muchas gracias y un saludo
Ir arriba Morta Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
Vaya, pensé que desactivando la opción de ver la vista terreno desaparecería el giro paulatino. Pero no, independientemente de que esté o no activa la vista terreno y la de streetview, siempre se inclina automáticamente el punto de vista.

La verdad es que no encuentre mas opción que la de tu función enderezar_vista(). Lo único que añadiría es que como mínimo le pongas como condición que solo se ejecute cuando la altura sea menor de X metros.

Echa un ojo por internet a ver si alguien ha dado con la solución. Porque si no... Amigo Morta, creo que estamos vencidos. Ojos que se mueven
Ir arriba _polifemo Compartir:

Morta
Veterano

Veterano
Registrado:
09-10-2008
Mensajes: 64

Votos: 0 👍
Responder citando
¿Es curioso verdad? Algo que está resuelto en el programa y que parece que no es posible hacer en el plugin.
Estaría bien hacer que solo se ejecute a partir de una altura determinada pero no se me ocurre la forma de hacerlo. Aunque pensándolo bien, quizá tendría que ser una función que comprobara a que altura está la vista y hacer que se ejecute la de enderezar_vista cuando correspondiese pero ¿que se ganaría con ello? Mientras la vista no se inclina, el usuario no percibe nada, solo se ve cuando empieza a inclinarse que, cada vez que se mueve el ratón, la vista se "endereza".
He probado con las otras opciones que permite la función con el fin de hacer lo mas transparente posible la ejecución de la función al usuario pero no consigo que lo sea así que la que creo que mas se ajusta a lo que buscaba es la de mover el ratón. Estas posibilidades que comento son:
Google.earth.addEventListener(ge.getGlobe(), 'mouseclick', enderezar_vista);
Google.earth.addEventListener(ge.getGlobe(), 'mousedblclick', enderezar_vista);
Google.earth.addEventListener(ge.getGlobe(), 'mouseover', enderezar_vista);
Google.earth.addEventListener(ge.getGlobe(), 'mousedown', enderezar_vista);
Google.earth.addEventListener(ge.getGlobe(), 'mouseup', enderezar_vista);
Google.earth.addEventListener(ge.getGlobe(), 'mouseout', enderezar_vista);

También he probado con los eventos de cambio de vista earth-api-samples.googlecode.com/ ...hange.html pero tampoco me funciona bien. Quizá complementado con la función de comprobar la altura a la que esté la vista funcionaría mejor. ¿Se te ocurre como hacer esa función para comprobar la altura?

Respecto al relieve, también es curioso que no se pueda eliminar la opción. Ya digo que, en el programa, aunque el intervalo es de 0.5 a 3, si le pones 0 como valor, elimina toda la exageración del terreno.

Muchas gracias por tu ayuda. Sigo dandole vueltas al tema.
Un saludo
Ir arriba Morta Compartir:

_polifemo
SuperExpert

SuperExpert
Registrado:
27-11-2009
Mensajes: 436

Votos: 0 👍
Responder citando
Efectivamente, la función se debería ejecutar solo cuando se compruebe que la altura es menor que una determinada . ¿Conoces las estructuras condicionales IF THEN...ELSE?

Le he echado un ojo al api de Google earth, y lo primero que he visto es que es muy pobre, la verdad es que está muy limitada comparada con el API de Gmaps. Y parece que hay un modo que debería funcionar, pero que es largo y complicado:

1.-El método "GEView.getViewportGlobeBounds()" te va a devolver un objeto "KmlLatLonBox". Ver aquí.

2.-La interfaz KmlLatLonBox dispone de las funciones KmlLatLonBox.getNorth() y KmlLatLonBox.getSouth() que te dan la latitud superior e inferior de la pantalla en la vista del momento (en grados decimales). Ver aquí.

3.-Las restas (en su valor absoluto para que el algoritmo funcione bien en el hemisferio sur), y si el valor es menor que el que tú determines, se activa el enderezamiento.

Simple e intuitivo, ¿verdad? Chocado

Supongo que la cuestión es si te vale la pena tanta historia, o si directamente le aplicas la función en cada cambio de zoom. Yo te recomendaba esto por: elegancia, para no sobresaturar el procedimiento con operaciones innecesarias y sobre todo (y la mas importante) por que con tu método estabas impidiendo que el usuario pudiera voluntariamente inclinar la vista, pues en ese caso la función automáticamente enderezaría la vista e impediría la operación.

La verdad es que veo el API de Google Earth cada vez mas limitado (además de mal explicado). Y no creo que lo amplíen en un futuro, google ve mas negocio con el maps.

Oye, ¿que tal si dejas un checkbox para activar y desactivar el evento a gusto del usuario?. ¿y sobre el botón derecho? en gmaps exite ese evento, no se si en GE está.

Respecto al terreno, no se si tomarmelo como curioso o como un fallo. Ahora, que también es verdad que los programadores de GEarth pensaran que quien no quiera una vista en relieve, mejor que cargue la vista satelital de gmaps (con menor gestión de recursos).

Bueno, la pelota está en tu tejado.
Ir arriba _polifemo Compartir:

Morta
Veterano

Veterano
Registrado:
09-10-2008
Mensajes: 64

Votos: 0 👍
Responder citando
Hola Polifemo
Curiosa esa forma de determinar si está dentro de un margen de altura. Mides la diferencia entre latitudes y si es pequeña, estas cerca del suelo.. Nunca se me hubiera ocurrido Sonriente
Le echaré un vistazo.

Por cierto, he hecho una consulta al respecto de la exageración del terreno en la página oficial de Google Earth (donde puedes reportar fallos y solicitar funciones, no la conocía) y esto me han contestado de momento code.google.com/ ...ail?id=619
Al principio, me han regañado Trist remitiéndome a un ejemplo y diciendo que pusiera como valor 0 (lo que ya habíamos intentado y que no funciona). Cuando les he dicho que eso no funciona y que el ejemplo que citan tampoco funciona correctamente parece que han reconsiderado el tema. A ver que pasa.
También he consultado sobre el tema de la inclinación y he incluido la forma de dibujar circulos sin que se conviertan en ovalos. Ahí no han contestado todavía
Un saludo
Ir arriba Morta Compartir:
Mostrar mensajes de anteriores:   
SubForos: Java - Kmz - Google Maps - Herramientas - Html - Javascript - Excel - Php - Programacion
 Responder al tema   Versión Imprimible
Todas las horas son GMT + 1 Hora
Página 1 de 1 - Tema con 7 Mensajes y 23870 Lecturas - Última modificación: 06/04/2011




RSS: Foro Programación de Google Earth y Maps RSS - Ultimos Mensajes
Cambiar a:  


Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
No Puedes adjuntar archivos en este foro
Tu puedes descargar archivos en este foro



Mostrar/Ocultar Últimas Fotos del Foro