TypeError: c is null

Este debate contiene 4 respuestas, tiene 2 mensajes y lo actualizó Profile photo of Carlos Guerrero López Carlos Guerrero López hace 4 años, 9 meses.

Viendo 5 publicaciones - del 1 al 5 (de un total de 5)
  • Autor
    Mensajes
  • #810

    Hola de nuevo,

    Tengo un problema al ejecutar un parte de código. La primera vez que lo hago no tengo ningún problema, pero la segunda vez me da el siguiente error: TypeError: c is null.

    En concreto lo que tengo es un panel con dos combobox en los que el usuario elige una capa en cada uno de ellos. A partir de esta selección utilizo el widget LayerSwipe.

    El evento layers-add-result del mapa controla la creación de la leyenda y la del widget LayerSwipe:

    map.on('layers-add-result', function () {
                  //#region Legenda
                  legend = new esri.dijit.Legend({
                      map: map,
                      layerInfos: legendLayers
                  }, "legendDiv");
                  legend.startup();
                  //#endregion
    
                  //#region Swipe Layer
                  //swipeLayer = map.getLayer(layer1);
                  swipeWidget = new esri.dijit.LayerSwipe({
                      type: "vertical",  //Try switching to "scope" or "horizontal"
                      map: map,
                      layers: [layer1]
                  }, "swipeDiv");
                  swipeWidget.startup();
    
                  //#endregion

    El primer combobox recoge el identificador de la primera capa seleccionada y activa el segundo combobox:

    function layer1_selected() {
              var e = dojo.byId("Layer2");
              e.disabled = false;
          }

    Luego hay un botón en el que cojo los valores seleccionados en los combobox y añado estas capas al mapa. Una de ellas, como se ve en el código del principio es la que introduzco en el widget SwipeLayer.

    function SelectLayers() {
    
              dojo.byId("PanelSelect").style.display = "none";
    
              if (dojo.byId("NewSelect").style.display == "none") {
                  dojo.byId("NewSelect").style.display = "block";
              }
    
              else {
                  dojo.byId("NewSelect").style.display = "none";
              }
    
              var p = dojo.byId("Layer1");
              var value_layer1 = p.options[p.selectedIndex].value;
    
              var e = dojo.byId("Layer2");
              var value_layer2 = e.options[e.selectedIndex].value;
    
              if (value_layer1 == 1) {
                  layer1 = mangroves;
              }
    
              else {
                  layer1 = coldcoral;
              }
    
              if (value_layer2 == 1) {
                  layer2 = mangroves;
              }
    
              else {
                  layer2 = coldcoral;
              }
    
              map.addLayers([layer1, layer2]);
              
          }

    Cuando ejecuto el código, lo hace sin problemas, se cargan las dos capas y el widget. Además aparece un nuevo botón que lo que hará es que si lo presiono, elimine las capas que hay en el mapa y vuelva a abrirse el panel de selección para volver a seleccionar la capa que yo quiera. El manejador de este evento es el siguiente:

    function OpenSelectPanel() {
    
              if (dojo.byId("NewSelect").style.display == "none") {
                  dojo.byId("NewSelect").style.display = "block";
              }
    
              else {
                  dojo.byId("NewSelect").style.display = "none";
              }
    
              dojo.byId("PanelSelect").style.display = "block";
              swipeWidget.destroy();
              legend.destroy();
              map.removeAllLayers();
              map.setBasemap("oceans")
          }

    Esto también lo hace sin problemas. Pero cuando vuelvo a presionar el botón con las nuevas capas seleccionadas es cuando me salta la excepción. ¿Alguna idea del problema?

    Saludos a todos,
    Luis Miguel

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

    Hola LuisMi, ¿me puedes decir exactamente en que línea te salta el error?

    Saludos

    #815

    Pues me pasa una cosa curiosa, según donde ponga el punto de parada me falla en una línea diferente…. ¿¿¿¿????

    Gracias de nuevo

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

    Asi? puedes hacer un ejemplo simplificado para que lo intentemos probar y asi pode ayudarte mejor?

    Saludos!

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

    Asi? puedes hacer un ejemplo simplificado para que lo intentemos probar y asi pode ayudarte mejor?

    Saludos!

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

Debes estar registrado para responder a este debate.