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);
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 = '';
}
});
}
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
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