En mi mapa tengo 3 capas superpuestas, las cuales deben ser mutuamente excluyentes, es decir, no pueden estar activadas (marcadas) al mismo tiempo. Pensé en usar eventos para activar las superposiciones como lo siguiente en mi archivo principal index.html:
function init(){
var map, kml_1Layer, kml_2Layer, kml_3Layer;
...
kml_1Layer.events.register("visibilitychanged", this, layerChanged);
kml_2Layer.events.register("visibilitychanged", this, layerChanged);
kml_3Layer.events.register("visibilitychanged", this, layerChanged);
...
}
function layerChanged(layer) {
if (layer.object.visibility) {
switch (layer.object.name) {
case "kml_1Layer":
kml_2Layer.setVisibility(false);
kml_3Layer.setVisibility(false);
break;
case "kml_2Layer":
kml_1Layer.setVisibility(false);
kml_3Layer.setVisibility(false);
break;
case "kml_3Layer":
kml_1Layer.setVisibility(false);
kml_2Layer.setVisibility(false);
break;
}
}
}
Puede ver el sitio web aquí: http://genepoulin.net/geo/index.html Obviamente, los eventos no se activan.
¿Qué me estoy perdiendo aquí?
ACTUALIZADO y resuelto...
Código corregido (me equivoqué al nombrar los casos de conmutación):
function init(){
var map, kml_1Layer, kml_2Layer, kml_3Layer;
...
kml_1Layer.events.register("visibilitychanged", kml_1Layer, layerChanged);
kml_2Layer.events.register("visibilitychanged", kml_2Layer, layerChanged);
kml_3Layer.events.register("visibilitychanged", kml_3Layer, layerChanged);
...
}
function layerChanged(layer) {
if (layer.object.visibility) {
switch (layer.object.name) {
case "*given label of layer1*":
kml_2Layer.setVisibility(false);
kml_3Layer.setVisibility(false);
break;
case "*given label of layer2*":
kml_1Layer.setVisibility(false);
kml_3Layer.setVisibility(false);
break;
case "*given label of layer3*":
kml_1Layer.setVisibility(false);
kml_2Layer.setVisibility(false);
break;
}
}
}
Puedes ver el resultado en mi página.