Problemas al usar checkbox para controlar la visibilidad de las capas

Homepage Foros Desarrollo con el API JavaScript de ArcGIS Problemas al usar checkbox para controlar la visibilidad de las capas

Etiquetado: ,

Este debate contiene 2 respuestas, tiene 2 mensajes y lo actualizó Profile photo of Luis Miguel Luis Miguel Agudo hace 5 años, 6 meses.

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)
  • Autor
    Mensajes
  • #746

    Hola a todos,

    Me ha surgido una problemilla. EStoy utilizando unos checkbox para mostrar u ocultar diferentes capas cacheadas que tengo en una aplicación. Utilizo dojo.on para manejar el evento “change” de cada uno de los checkbox, y lo hago a través de la función “updateLayerVisibility”.

    `map.addLayers([mangroves, coldcoral, marineEcoregions, pelagicProvinces, wmsLayer]);

    on(dom.byId(“mangroves”), “change”, updateLayerVisibility);
    on(dom.byId(“coldcoral”), “change”, updateLayerVisibility);
    on(dom.byId(“marineEcoregions”), “change”, updateLayerVisibility);
    on(dom.byId(“pelagicProvinces”), “change”, updateLayerVisibility);

    function updateLayerVisibility() {
    //var visibleLayerIds = []
    var inputs = query(“.list_item”);
    var inputCount = inputs.length;

    for (var i = 0; i < inputCount; i++) { if (inputs[i].checked) { //visibleLayerIds.push(inputs[i].value); map.addLayer(inputs[i].value); } if (inputs[i].checked == false) { map.removeLayer(inputs[i].value) } }` Al ejecutarlo me da una excepción en la sentencia map.addLayer. En concreto me dice lo siguiente: uncaught exception: lang.hitch: scope[“onLoad”] is null (scope=”[object Window]”) He hecho unas cuantas pruebas modificando el código para llegar al mismo resultado, pero siempre me da la excepción al usar el método addLayer o addLayers. ¿Sabéis por qué puede ser? Muchas gracias de antemano…

    #749
    Profile photo of Carlos Guerrero López
    Carlos Guerrero López
    Super administrador

    Hola LuisMi, si estas agregando las capas con el método Addlayers creo que es mejor que cuando manejes los eventos del checkbox , no agregues de nuevo la capa si no que cambies su visibilidad. Creo que el error puede ser por que lo que estas agregando al mapa no es un objeto capa, si no el nombre de la capa que quieres agregar.

    #809

    Hola Carlos,

    Efectivamente ese era el problema, me di cuenta después que lo que pide el método addLayer es un objeto capa y no el identificador de la capa. Al final lo he hecho es manejar el evento onchange de todos los checkbox y pasarles la propiedad value de ese checkbox que es igual que el nombre del objeto capa del que quiero controlar su visibilidad.

    <input id='coldcoral' type="checkbox" class='list_item' onchange="updateLayerVisibility(this.value)" name="option2" value="coldcoral" checked> <b>Cold Coral</b><br>

    Y en el método updateLayerVisibility controlo la visibilidad:

    function updateLayerVisibility(evt) {
        var clayer = map.getLayer(evt);
        clayer.setVisibility(!clayer.visible);
        this.checked = clayer.visible;
    }

    Me di cuenta del error que me comentas porque lo cometí también en otra parte del código, pero en esta otra funcionalidad ahora me da una excepción, no la primera vez que la ejecuto, si no la segunda… Os resumo el problema en otro post.

    Muchas gracias

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)

Debes estar registrado para responder a este debate.