Print Tool: Druck von Gruppenlayern mit WFS-Diensten

Issue #751 resolved
David Messerer created an issue

Beim Druck von Gruppenlayern mit WFS-Diensten und Styling wird der folgende Fehler in der Konsole geworfen:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getRulesForFeature')
at Object.getStyleAttributes (masterportal.js:59:215121)
at masterportal.js:59:207357
at Array.forEach (<anonymous>)
at Object.buildStyle (masterportal.js:59:207296)
at Object.buildVector (masterportal.js:59:207193)
at Object.<anonymous> (masterportal.js:59:204716)
at p (masterportal.js:201:921094)
at Generator.e._invoke (masterportal.js:201:920894)
at Generator.next (masterportal.js:201:921515)
at A (masterportal.js:59:199736)

Die PDF wird dann auch nicht erstellt sondern bleibt im “Lademodus”.

Comments (5)

  1. Inka Dudek

    Hallo Herr Messerer,

    haben Sie eine Beispiel-Konfiguration zum Nachstellen?

    Mit den Hamburger Layern kommt es bei mir nicht zu dem Fehler, wenn ich 2 WFS-Layer als Gruppe einbinde und style.

  2. David Messerer reporter

    Hallo Frau Dudek,

    vielen Dank für die schnelle Antwort. Nach Ihrer Nachricht hab ich selber etwas nach dem Fehler gesucht, um auszuschließen, ob ich nicht doch etwas falsch konfiguriert habe.
    Bei der Fehlersuche ist mir dann aufgefallen, dass der Funktion returnModelById (list.js) die LayerID “default” übergeben wird, obwohl diese in unserem Fall “Staedtische_Aemter” sein müsste.

    Ich habe den Gruppenlayer zum testen auch im Basic Portal in der Entwicklungsumgebung hinzugefügt. Auch dort wird der Funktion returnModelById “default” übergeben, allerdings existiert dort auch die LayerID “default” weshalb es nicht zu diesem Fehler kommt.

    Wenn man in der Datei buildSpec.js folgende Zeilen der Funktion getStyleAttributes tauscht wird die richtige styleId übergeben:

                const styleList = Radio.request("StyleList", "returnModelById", layerModel.get("styleId"));
    
                layerModel = this.getChildModelIfGroupLayer(layerModel, layerId);
    

    Allerdings frage ich mich trotzdem woher der default style kommt und warum dieser in unserem Portal nicht existiert. Übersehe ich irgendwas ganz triviales? Anbei noch die Links & Snippets zu unserer Konfiguration, damit Sie das ganze besser nachvollziehen können:

    Portal ohne temporären Fix:

    https://mapstest.stuttgart.de/spielwiese/stadtplan_print/?Map/layerIds=topplusopen,Basemap_EPSG25832-WMTS,A62_GK_BESFLURSTGRENZEN_EPSG25832-WMS,Aemter_u_Eigenbetriebe&visibility=true,true,true,true&transparency=40,0,0,0&Map/center=[515256,5401968.500000001]&Map/zoomLevel=3

    Portal mit temporären Fix:

    https://mapstest.stuttgart.de/spielwiese/stadtplan_2_19_0/?Map/layerIds=topplusopen,Basemap_EPSG25832-WMTS,A62_GK_BESFLURSTGRENZEN_EPSG25832-WMS,Aemter_u_Eigenbetriebe&visibility=true,true,true,true&transparency=40,0,0,0&Map/center=[514266.6119584559,5402485.260822396]&Map/zoomLevel=3

    styles.json:

    https://mapstest.stuttgart.de/spielwiese/_config/ressources/styles.json

      {
        "styleId": "Staedtische_Aemter",
        "rules": [
          {
            "style": {
              "type": "icon",
              "imageScale": "0.8",
              "imageName": "Staedtische_Aemter.png",
              "legendValue":"Amt / Eigenbetrieb",
              "clusterType": "icon",
              "clusterImageName":"Staedtische_Aemter.png",
              "clusterImageScale":1.1,
              "clusterTextOffsetX":7,
              "clusterTextOffsetY":9,
              "clusterTextFillColor":[0, 0, 0, 1],
              "clusterTextStrokeColor":[255, 255, 255, 1],
              "clusterTextStrokeWidth":2.5,
              "clusterTextScale":1.3
            }
          }
        ]
      },
    

    config.json:

    https://mapstest.stuttgart.de/spielwiese/stadtplan_2_19_0/config.json

    {
                      "id":"Aemter_u_Eigenbetriebe",
                      "name":"Ämter und Eigenbetriebe",
                      "children":[
                        {
                          "id":"IP_AMT_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME"
                        },
                        {
                          "id":"IP_BUERGERBUEROS_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME",
                          "legend":false
                        },
                        {
                          "id":"IP_EIGENBETRIEB_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME",
                          "legend":false
                        },
                        {
                          "id":"IP_JUGENDGESUNDHEIT_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME",
                          "legend":false
                        },
                        {
                          "id":"IP_RATHAUS_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME",
                          "legend":false
                        },
                        {
                          "id":"IP_WELCOME_CENTER_EPSG25832-WFS",
                          "styleId":"Staedtische_Aemter",
                          "clusterDistance":40,
                          "mouseHoverField":"NAME",
                          "legend":false
                        }
                      ]
                    },
    

    Beste Grüße aus Stuttgart

    David Messerer

  3. Log in to comment