Mostrar/Ocultar

 Capas en Google Earth 


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: KML - Google Maps - Html - Kmz - Java - Javascript - Php - Programacion - Excel
Página 1 de 1 - Tema con 15 Mensajes y 23978 Lecturas
Último Mensaje Publicado:
Foro de Programación de Google Earth y Maps Ver más mensajes sobre Capas en Google Earth en el foro
Autor Mensaje
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Hola de nuevo Polifemo

He estado haciendo pruebas pero no doy con ello
Tu ejemplo me vale pero lo que trato de hacer es que una vez cargado el fichero, se pueda ocultar y ver otra vez si el usuario quiere y volver a ocultarlo las veces que quiera. Con tu código se muestra una vez y posteriormente se oculta pero ya no se mostraría otra vez a no ser que se recargue la página

Supongo que el tema sería cargar el fichero y crear un boton o un checkbox que hiciera que la función initCallback se ejecutara de nuevo pero ahora con removeChild(networkLink) pero he probado de mil maneras pero nada, no soy capaz
En este ejemplo me dice que 'ge' es nulo o no es un objeto. Imagino que es porque la instancia ya está cargada



<html>
<head>
<script src="http://www.google.com/jsapi?key=ABQIAAAArCZgeQ8ddm8YbeJQqqHN5BTYrZjdppbykE52CdH9dtH9wJ0VsBQSgm6ZbaTJsaMARyyYkz_JttmHMQ"></script>
<script>
var path="http://code.google.com/articles/support/earthapikml.kml"
google.load('earth', '1');
var ge = null;
function init() {
google.earth.createInstance('map3d', initCallback, failureCallback);
}

function initCallback(pluginInstance) {
ge = pluginInstance;
ge.getWindow().setVisibility(true);
var link = ge.createLink('');
link.setHref(path);
var networkLink = ge.createNetworkLink('');
networkLink.setLink(link);
networkLink.setFlyToView(true);
ge.getFeatures().appendChild(networkLink);
//window.alert("Ahora deberias verlo (espera a que cargue)");
//ge.getFeatures().removeChild(networkLink);
//window.alert("Ahora no deberias verlo");
}

function ocultar(pluginInstance) {
ge = pluginInstance;
ge.getWindow().setVisibility(true);
var link = ge.createLink('');
link.setHref(path);
var networkLink = ge.createNetworkLink('');
networkLink.setLink(link);
networkLink.setFlyToView(true);
//ge.getFeatures().appendChild(networkLink);
//window.alert("Ahora deberias verlo (espera a que cargue)");
ge.getFeatures().removeChild(networkLink);
window.alert("Ahora no deberias verlo");
}
function Traspulsartecla() {
window.alert("Has pulsado el boton ejecutar");
}
function failureCallback() {
window.alert("Ha habido un error");
}
</script>

</head>
<body onload="init()" id="body">
<div id="map3d_container" style="width: 500px; height: 500px;">
<div id="map3d" style="height: 100%;"></div>
</div>
<br>
<br>
<div>
<form action='javascript:ocultar();void(0);'>
<input type=submit value='ocultar'>
</form>
</div>

</body>
</html>

Sigo intentándolo....
Ir arriba Hola de nuevo Polifemo. He estado haciendo pruebas pero no doy con ello. Tu ejemplo me vale pero lo que trato de hacer es que una vez cargado el... Morta Compartir:
_polifemo
Avatar de _polifemo
SuperExpert

SuperExpert
Registrado:
Nov 27, 2009
Mensajes: 436

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Juas, juas... la verdad es que las traducciones automáticas son casi tan malas como las nuestras.

Opino como tú que el truco va a estar en la aplicacion del método "removeChild". pero si te fijas en el primer artículo que te pasé hay un cuadro que compara los tres métodos disponibles. Pues resula que hemos optado por intentarlo por el único que no permite manipular el kml despues de desplegado. La clave va ha estar en el método fetchKml.

He encontrado esto code.google.com/ ...nteractive) tienes ejemplos con cb, chbox y un ejemplo de como desactivar y activar el relieve (pedazo de rincón, me da que lo vamos ha visitar mucho).

A ver si saco tiempo y te hecho una mano (vamos, si mi jefe me deja). Pero creo que podrás adaptar el código sin problemas. Suerte y a ello.

PD: yo tambien tengo problemas y muchos en encontrar lo que necesito cuando consulto en la "ayuda" de GE.
Ir arriba Juas, juas... la verdad es que las traducciones automáticas son casi tan malas como las nuestras. Opino como tú que el truco va a estar en la... _polifemo Compartir:
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Hola Polifemo

Es lo que tiene lo de chapurrear el inglés, que tengo que tirar de traductores automáticos y debo decir cada barbaridad Trist

Conozco ese visor interactivo, lo he visto alguna vez por ahí pero con el enlace que pones se abre pero en vacío, sin datos y no se como llegar al original con el código que, recuerdo que he visto alguna vez

Vaya. me alegro de no ser el único que se vuelve loco con la ayuda de las apis de Google Sonriente La verdad es que se podían currar un poquito mas la ayuda con mas ejemplos y un poco menos caótica en la organización de la documentación o al menos eso me parece a mi


Esto es lo que pretendo hacer. Ahora sería adaptarlo para Google Earth. A ver si damos con ello.
Un saludo

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="CHARSET" CONTENT="ISO-8859-1">
<title>Ver tracks en GOOGLE MAPS</title>
</head>
<body>
<script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAArCZgeQ8ddm8YbeJQqqHN5BTYrZjdppbykE52CdH9dtH9wJ0VsBQSgm6ZbaTJsaMARyyYkz_JttmHMQ"
type="text/javascript"></script>

<script type="text/javascript">
var map;
var geoXml = new GGeoXml("http://code.google.com/articles/support/earthapikml.kml");


var toggleState = 0;//SE MUESTRA O NO EL TRACK CUANDO CARGA LA PAGINA
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.7981196,
-122.58785), 12);
map.addControl(new GLargeMapControl());
map.addMapType(G_NORMAL_MAP);
map.addMapType(G_SATELLITE_MAP);
map.addMapType(G_HYBRID_MAP);
map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GMapTypeControl());
map.addOverlay(geoXml);

}
}
function toggleMyKml() {
if (toggleState == 0) {
map.removeOverlay(geoXml);
toggleState = 1;//SE MUESTRA EL TRACK
} else {
map.addOverlay(geoXml);
toggleState = 0;//SE OCULTA EL TRACK
}
}
</script>
</head>
<body onunload="GUnload()">
<body onload="initialize()">
<center><div id="map_canvas" style="width: 900px; height: 900px; float:center; border: 1px solid black;"></div>
</div>
<br clear="all"/>
<br/>

<center><input type="button" value="VER / OCULTAR TRACK" onClick="toggleMyKml();"/></CENTER>
</body>
</html>
Ir arriba Hola Polifemo. Es lo que tiene lo de chapurrear el inglés, que tengo que tirar de traductores automáticos y debo decir cada barbaridad :-( Conozco... Morta Compartir:
_polifemo
Avatar de _polifemo
SuperExpert

SuperExpert
Registrado:
Nov 27, 2009
Mensajes: 436

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
¿esto no te sirve?



check.txt   Google Maps Ver en Google Maps
 Nombre:  check.txt
 Tamaño:  4.93 KB
 Descargado:  569 veces
Ir arriba _polifemo escribió: ¿esto no te sirve? _polifemo Compartir:
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Muchas gracias polifemo!!!
No había visto este ejemplo. Esto hace precisamente lo que quiero, cargar y descargar varios ficheros en la misma instancia

La verdad es que no entiendo demasiado bien como lo hace. Ahora me estoy peleando con que meta los ficheros que yo quiero porque en el ejemplo utiliza las variables red yellow y green para construir el nombre del kml que carga y parece sencillo pensar que cambiando el nombre funcione pero no es así ya que esas palabras las pasa como parámetros o variables en algunas funciones y no cojo el funcionamiento.

Por ejemplo si utilizo un if para ver la variable que me pasa y en función de eso construir el fichero, algo que luego podría cambiar para poner el que yo quiero, no consigo que funcione

En la función

function loadKml(file) {
var kmlUrl = 'http://earth-api-samples.googlecode.com/svn/trunk/' + 'examples/static/' + file + '.kml';

se ve que construye el nombre con la variable file que recibe como parámetro (que por cierto, se la cambio por otro nombre para que funcionara el siguiente if ya que file es una palabra reservada)
Si trato de hacer un if como este, creo que debería de funcionar ya que la palabra que le pasa como parámetro a la función es red o yellow o green y en el condicional si que lo detecta pero no carga el fichero y me da un error diciendo que red no está definido.


if (file=="red")
{
window.alert(file);
var kmlUrl = 'http://earth-api-samples.googlecode.com/svn/trunk/' + 'examples/static/' + red + '.kml';
}
else if (file=="yellow")
{
window.alert(file);
var kmlUrl = 'http://earth-api-samples.googlecode.com/svn/trunk/' + 'examples/static/' + yellow + '.kml';
}
else
{
window.alert(file);
var kmlUrl = 'http://earth-api-samples.googlecode.com/svn/trunk/' + 'examples/static/' + green + '.kml';
}

Mis conocimientos de javascript son bastante limitados e igual estoy haciendo una barbaridad
Sigo peleándome
Ir arriba Muchas gracias polifemo!!! No había visto este ejemplo. Esto hace precisamente lo que quiero, cargar y descargar varios ficheros en la misma... Morta Compartir:
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Bueno, ya lo he conseguido. Estaba considerando las palabras red, yellow y green como variables en mi if. Menudo fallo!
Este es el código. Permite cargar tres ficheros que le indiquemos y verlos o no según seleccionamos. Es decir como si fuesen capas.

Polifemo, te agradezco mucho la ayuda que me has prestado. Llevaba tiempo detrás de esto y anda que no he dado palos de ciego hasta ahora!!

Un saludo



<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="CHARSET" CONTENT="ISO-8859-1">
<title>Capas en Google Earth</title>
<!--SUSTITUYE POR TU KEY API-->
<script src="http://www.google.com/jsapi?key=ABQIAAAArCZgeQ8ddm8YbeJQqqHN5BTYrZjdppbykE52CdH9dtH9wJ0VsBQSgm6ZbaTJsaMARyyYkz_JttmHMQ"></script>

<script type="text/javascript">
function addSampleButton(caption, clickHandler) {
var btn = document.createElement('input');
btn.type = 'button';
btn.value = caption;

if (btn.attachEvent)
btn.attachEvent('onclick', clickHandler);
else
btn.addEventListener('click', clickHandler, false);

// Añade botón
document.getElementById('sample-ui').appendChild(btn);
}

function addSampleUIHtml(html) {
document.getElementById('sample-ui').innerHTML += html;
}
</script>

<script type="text/javascript">
var ge;

// store the object loaded for the given fichero... initially none of the objects
// are loaded, so initialize these to null
var currentKmlObjects = {
'red': null,
'yellow': null,
'green': null
};

google.load("earth", "1");

function init() {
google.earth.createInstance('map3d', initCallback, failureCallback);

addSampleUIHtml(
'<h2>Como cargar varios ficheros kml en Google Earth y visualizarlos a modo de capas independientes</h2>' +
'<input type="checkbox" id="kml-red-check" checked onclick="toggleKml(\'red\');"/><label for="kml-red-check">Recorrido del descenso</label><br/>' +
'<input type="checkbox" id="kml-yellow-check" checked onclick="toggleKml(\'yellow\');"/><label for="kml-yellow-check">Situación</label><br/>' +
'<input type="checkbox" id="kml-green-check" checked onclick="toggleKml(\'green\');"/><label for="kml-green-check">Acceso y retorno</label><br/>'
);
}

function initCallback(instance) {
ge = instance;
ge.getWindow().setVisibility(true);

// se añade control de navegación
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

// se añaden capas
ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);

// nos situamos en el mapa
var la = ge.createLookAt('');
la.set(42.7052, -0.3295,
0, // altitude
ge.ALTITUDE_RELATIVE_TO_GROUND,
0, // heading
0, // straight-down tilt
1000 // range (inverse of zoom)
);
ge.getView().setAbstractView(la);

//carga el fichero que seleccionemos en el checkbox
if (document.getElementById('kml-red-check').checked)
loadKml('red');

if (document.getElementById('kml-yellow-check').checked)
loadKml('yellow');

if (document.getElementById('kml-green-check').checked)
loadKml('green');
}

function failureCallback(errorCode) {
}

function toggleKml(fichero) {
// borra los kml que pudieran existir anteriormente
if (currentKmlObjects[fichero]) {
ge.getFeatures().removeChild(currentKmlObjects[fichero]);
currentKmlObject = null;
}

// Si se selecciona el checkbox carga el fichero y lo muestra
var kmlCheckbox = document.getElementById('kml-' + fichero + '-check');
if (kmlCheckbox.checked)
loadKml(fichero);
}

function loadKml(fichero) {
if (fichero=="red")
{
var kmlUrl = 'http://www.topocanyons.info/pruebas_php/capa_recorrido.kml';
}
else if (fichero=="yellow")
{
var kmlUrl = 'http://www.topocanyons.info/pruebas_php/capa_situacion.kml';
}
else
{
var kmlUrl = 'http://www.topocanyons.info/pruebas_php/capa_track.kml';
}


// fetch the KML
google.earth.fetchKml(ge, kmlUrl, function(kmlObject) {

if (kmlObject) {
// se muestra en Google Earth
currentKmlObjects[fichero] = kmlObject;
ge.getFeatures().appendChild(kmlObject);
} else {
// en caso de que no exista el fichero kml o sea corrupto
currentKmlObjects[fichero] = null;

//Alerta en devolución de la llamada a la API y los controladores de eventos
//para evitar estancamiento en algunos navegadores
setTimeout(function() {
alert('Bad or null KML.');
}, 0);

// elimina la marca del checkbox
document.getElementById('kml-' + fichero + '-check').checked = '';
}
});
}

</script>
</head>
<body>
<body onload="init()" style="font-family: arial, sans-serif; font-size: 13px; border: 0;">
<div id="sample-ui"></div>
<div id="map3d" style="width: 800px; height: 600px;"></div>
<br>
</body>
</html>
Ir arriba Bueno, ya lo he conseguido. Estaba considerando las palabras red, yellow y green como variables en mi if. Menudo fallo! Este es el código. Permite... Morta Compartir:
_polifemo
Avatar de _polifemo
SuperExpert

SuperExpert
Registrado:
Nov 27, 2009
Mensajes: 436

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
PUFF estos códigos empiezan a parecerse a manuscritos en sanscrito o algo así.

Gracias por nada, he aprendido y mucho mientras te hechaba una mano.

PD: ya nos dejaras el link cuando tengas acabada la página.
Ir arriba PUFF estos códigos empiezan a parecerse a manuscritos en sanscrito o algo así. Gracias por nada, he aprendido y mucho mientras te hechaba una mano... _polifemo Compartir:
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Es lo que tiene esto del código... Sonriente y mas con lo enrevesado que es el código de la API (al menos para mi).

A veces nos obcecamos con algo y dieciocho ojos ven mas que dos. Es lo bueno de los foros cuando la gente los utiliza para compartir conocimientos

Bueno, que me enrollo. Ahí va la página
www.topocanyons.info/ ...capas.html

Un saludo y muchas gracias
Ir arriba Es lo que tiene esto del código...y mas con lo enrevesado que es el código de la API (al menos para mi). A veces nos obcecamos con algo y dieciocho... Morta Compartir:
Fercanez
Avatar de Fercanez
Usuario Reciente

Usuario Reciente
Registrado:
Abr 16, 2010
Mensajes: 7
Ubicación: Baja California
Visitar sitio web del autor MSN Messenger Perfil de Instagram
Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
MORTA, UNA PREGUNTA, HAZ INTENTADO HACER ESTO COMBINANDOLOS CON EL API DE GOOGLE MAP? OSEA QUE TENGA LAS DOS OPCIONES, YA SEA PARA VERLO EN EL GOOGLE EARTH API O GOOGLE MAP API, EN UNA MISMA PAGINA? ES LO QUE ESTOY TRATANDO DE HACER....
TE LO DIGO PORQUE TARDA MUCHO EL API DEL EARTH EN COMPARACION DEL API DEL MAPS
POR CIERTO, LE DISTE AL CLAVO CON LO QUE NECESITABA
Ir arriba MORTA, UNA PREGUNTA, HAZ INTENTADO HACER ESTO COMBINANDOLOS CON EL API DE GOOGLE MAP? OSEA QUE TENGA LAS DOS OPCIONES, YA SEA PARA VERLO EN EL... Fercanez Compartir:
Fercanez
Avatar de Fercanez
Usuario Reciente

Usuario Reciente
Registrado:
Abr 16, 2010
Mensajes: 7
Ubicación: Baja California
Visitar sitio web del autor MSN Messenger Perfil de Instagram
Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
MORTA, UNA PREGUNTA, HAZ INTENTADO HACER ESTO COMBINANDOLOS CON EL API DE GOOGLE MAP? OSEA QUE TENGA LAS DOS OPCIONES, YA SEA PARA VERLO EN EL GOOGLE EARTH API O GOOGLE MAP API, EN UNA MISMA PAGINA? ES LO QUE ESTOY TRATANDO DE HACER....
TE LO DIGO PORQUE TARDA MUCHO EL API DEL EARTH EN COMPARACION DEL API DEL MAPS
POR CIERTO, LE DISTE AL CLAVO CON LO QUE NECESITABA
Ir arriba MORTA, UNA PREGUNTA, HAZ INTENTADO HACER ESTO COMBINANDOLOS CON EL API DE GOOGLE MAP? OSEA QUE TENGA LAS DOS OPCIONES, YA SEA PARA VERLO EN EL... Fercanez Compartir:
India
Avatar de India
Master_GE

Master_GE
Registrado:
Jul 16, 2009
Mensajes: 3944
Ubicación: .uy

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
que precioso y bien logrado que quedó ese trabajo Aplausos surprise Aplausos
Ir arriba Que precioso y bien logrado que quedó ese trabajo India Compartir:
Morta
Avatar de Morta
Veterano

Veterano
Registrado:
Oct 09, 2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth   Responder citando
Hola Fercanez (no se por qué, tu nick me resulta familiar)
No, no lo he intentado. Supongo que se pueda hacer pero no lo se realmente. Ya nos contarás tus progresos
Saludos

Mas tarde he recordado que en Wikiloc existe, creo, lo que dices
por ejemplo
es.wikiloc.com/ ...?id=834097
Ir arriba Hola Fercanez (no se por qué, tu nick me resulta familiar) No, no lo he intentado. Supongo que se pueda hacer pero no lo se realmente. Ya nos... Morta Compartir:
Mostrar mensajes de anteriores:   
SubForos: KML - Google Maps - Html - Kmz - Java - Javascript - Php - Programacion - Excel
 Responder al tema   Versión Imprimible
Todas las horas son GMT + 1 Hora
Página 1 de 1 - Tema con 15 Mensajes y 23978 Lecturas - Última modificación: 18/04/2010




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

Últimas búsquedas por posts: Ruler Map - Codigo Punto - Hacer Dinamicas Capas ... - 102 - App - Mover Ruta - Capas Google Earth
Últimas búsquedas por topics: Earth - Area - Foxpro - FALLA GOOGLE MAPS - Formato Kmz a 0 - Lineas Latitud Longitud