Capas en Google Earth en Google Maps 🗺️ k58 ✈️


Foro de Programación de Google Earth y Maps  Foro de Programación de Google Earth y Maps: Foro de Programación con las APIs de Google: Google Earth, Google Maps, KML, Aplicaciones Moviles
Autor Mensaje

Imagen: _polifemo
SuperExpert

SuperExpert
Registrado: 27-11-2009
Mensajes: 436

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

check.txt   ( Ver en el Foro)
 Nombre:  check.txt
 Tamaño:  4.93 KB
 Descargado:  658 veces
Ir arriba Compartir:

Imagen: Morta
Veterano

Veterano
Registrado: 09-10-2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth
Publicado:
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 Compartir:

Imagen: Morta
Veterano

Veterano
Registrado: 09-10-2008
Mensajes: 64

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth
Publicado:
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 Compartir:

Imagen: _polifemo
SuperExpert

SuperExpert
Registrado: 27-11-2009
Mensajes: 436

Votos: 0 👍
Enlaces Asunto: Re: Capas en Google Earth
Publicado:
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 Compartir:
Mostrar mensajes de anteriores:   
 Responder al tema   Versión Imprimible
Todas las horas son GMT + 1 Hora




RSS: Foro de Programación de Google Earth y Maps RSS
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