Werkzeug Filter - Initiale Öffnung eines Filters in einem Bereich wo sich keine Daten zum WFS befinden

Issue #811 resolved
Karl-Hans Heinemann created an issue

Wenn ein Filter erstmalig geöffnet worden ist und man befindet sich in einem Kartenbereich, wo der WFS keine Daten hat, so werden auch keine Treffer angezeigt. Die erste DropDown Liste ist gefüllt, liefert aber keine Treffer. Die nachfolgenden DropDown - Listen sind leer. Ein Kartenfilter wurde vorab nicht gesetzt.

Wird dagegen der Filter benutzt, wo die Karte z.B in der Gesamtübersicht geöffnet ist (hier hat der WFS all seine Objekte und Daten), so funktioniert die Filterauswahl fehlerfrei.

Wird initial in der Filterfunktion der Kartenfilter als Checkbutton gesetzt, so greift die Filterfunktion noch nicht. Erst wenn die erste Auswahl z.B. in einem Drop Down Menü getroffen wurde, dann greift die Filterfunktion und es werden Objekte in der Karte angezeigt. Mit Aktivieren des Kartenfilters wäre es wünschenswert, die in dem Kartenausschnitt befindlichen Objekte zum WFS anzuzeigen.

Comments (9)

  1. micha.pikora

    Moin Herr Heinemann, Moin Herr Sauer,

    für das erste Problem kann in Ihrem Fall die Lösung darin bestehen, in der Konfiguration "extern": true einzustellen.
    Dies sorgt dafür, dass nicht mithilfe des Layers im Masterportal gefiltert wird (auf dem offenbar nicht alle Features geladen sind), sondern dass der WFS-Server die Filterung übernimmt (geht noch nicht mit OAF). Dort wären dann alle Features vorhanden.

    "filter": {
        "name": "Mein Filter",
        // ...
        "layers": [
            {
                "title": "Mein Layer",
                // ...
                "extern": true
            }
        ]
    }
    

    Ihren zweiten Punkt/Vorschlag verstehe ich so:

    Ist in der Konfiguration "searchInMapExtent":true eingestellt (und "strategy":"active"), dann soll schon beim Anhaken der Checkbox "Suche im aktuellen Kartenausschnitt" die Filterung einmal ausgeführt werden.
    Beim Entfernen des Hakens soll die Filterung ebenfalls ausgeführt werden.

    Habe ich den zweiten Punkt korrekt wiedergegeben?
    Nach Rücksprache mit dem Entwickerteam können wir diesen Vorschlag konfigurierbar machen.

    Sollte ich die Punkte missverstanden haben oder sollte die o.g. Lösung nicht helfen, stellen Sie mir am besten eine Beispiel-config.json oder einen Link zu den betroffenen Portalen zur Verfügung. Damit könnte ich dann tiefer in die Analyse gehen.

    Gruß
    Micha Pikora

  2. Karl-Hans Heinemann reporter

    Hallo Herr Pikora,

    habe das betreffende Testportal unter https://geoportal-niederrhein.de/portal/testportal/ zur Verfügung gestellt. Unter Werkzeuge->Filterthemen werden die Filter gelistet.

    zu 1)

    Befinde ich mich in einem Ausschnitt, wo es keine Daten gibt, setze den Filter z.B. Gewerbe->Kleve und zoome dann raus, so wird überhaupt nicht gefiltert. Bei nicht gesetztem Kartenfilter sollten dann nur Objekte aus dem Kreis Kleve zu sehen sein. Hierbei ist nun “extern”:true angezeigt. Außerdem passt die Anzahl der Filter-Treffern nicht. Problematisch wird es dann auch, wenn das zweite DropDown - Menü (Name der Stadt/Kommune) geöffnet wird. Da wird keine Auswahl gelistet.

    Mache ich das ganze aus der Übersicht heraus (z.B. Maßstabe 1:400000), so arbeitet der Filter korrekt.

    zu 2)

    Hier ist bereits “searchInMapExtent”:true gesetzt gewesen. Wird initial das Häkchen (Suche im aktuellen Kartenausschnitt) gesetzt so passiert nichts. An der Stelle wäre es schön, wenn der Filter auf den Kartenbereich gesetzt wird und die Objekte des Filters, z.B. Gewerbe sichtbar werden.

    Mit freundlichen Grüßen

    Karl-Hans Heinemann

  3. micha.pikora

    Moin Herr Heinemann,

    danke für die Rückmeldung.

    zu 1)

    Ich habe den Bug nachvollzogen. Probieren Sie mal am Layer/an den Layern die “loadingStrategy” auf “all” einzustellen. Beispiel:

    {
        "id": "30021",
        "visibility": false,
        "styleId": "30021",
        "mouseHoverField": ["Name","Kategorie1","Kategorie2"],
        "loadingStrategy": "all"
    },
    

    Erläuterung

    Hier kommt uns die Standard-Strategie des Masterportals in die Quere. Das Masterportal versucht aus Performanz-Gründen immer nur die Features im aktuellen Extent des Browsers anzuzeigen (ausgelöst durch "loadingStrategy": "bbox" - das ist der Default).

    Wenn die Filter-Einstellung “extern” nicht auf true steht, dann arbeitet der Filter nur mit den vom Masterportal intern geladenen Features. Und das sind an einer Stelle, an der initial hingezoomed wurde zu wenige oder sogar gar keine Features. Daher filtert der Filter in diesem Fall “keine” Features und es findet folglich auch kein automatisches Zoomen statt.

    Wenn Sie dann rauszoomen, werden alle Features angezeigt (ungefiltert). Das liegt daran, dass das Masterportal die Vergrößerung des Browser-Extent feststellt und die Features der neuen bbox nachlädt - ohne den Filter zu nutzen. Dies alles lässt sich durch "loadingStrategy": "all" lösen.

    Warum werden in den Dropdown-Boxen nach der ersten Filterung keine Einträge mehr angezeigt?

    Antwort: Bei der Filter-Strategie "strategy": "active" werden die Drowdown-Boxen nur mit den Einträgen gefüllt, die in den gefundenen Features vorhanden sind. Da in der beschriebenen Konstellation mit "loadingStrategy": "bbox" ggf. an der herangezoomten Stelle keine Features existieren, sind die Dropdown-Boxen folglich leer. Auch dieses Problem wird durch "loadingStrategy": "all" gelöst.

    Warum werden in den Dropdown-Boxen initial alle Einträge angezeigt, obwohl bbox eingestellt ist?

    Antwort: Unabhängig von den im Masterportal vorhandenen Features laden die Dropdown-Boxen ihre Werte direkt vom Server (Hinweis: der Slider ebenfalls). Der Kern des Masterportals wird absichtlich umgangen. Daher funktionieren die Dropdown-Boxen beim initialen Befüllen unabhängig von vorhandenen Features und folglich unabhängig von der “loadingStrategy”.

    Warum funktioniert das Filtern bei “POI Behinderteneinrichtung” (Filterung mit "extern": true) nicht?

    Antwort: Dies liegt am CORS-Header beim POST-Request und folglich an Ihren Server-Einstellungen.

    Der CORS-Header ist für GET-Requests für https://geoservices.krzn.de/security-proxy/services/wfs_verb_poi korrekt eingestellt: Die Inhalte der Dropdown-Boxen von “POI Behinderteneinrichtung” werden erfolgreich über GET-Requests vom Server geladen. Aber die Filterung findet über einen POST-Request statt... und hier untersagt Ihnen Ihr Server den Zugriff: “Quellübergreifende (Cross-Origin) Anfrage blockiert”.

    Bitte kontaktieren Sie Ihren Server-Admin mit dem Hinweis, dass CORS auch für POST (und OPTIONS) gesetzt sein soll, wenn Sie eine externe Filterung wünschen. Alternativ können Sie an allen Layern "loadingStrategy": "all" verwenden und auf "extern": true sowie das Setzen des CORS-Headers für POST verzichten.

    zu 2)

    “(…) Wird initial das Häkchen (Suche im aktuellen Kartenausschnitt) gesetzt so passiert nichts. An der Stelle wäre es schön, wenn der Filter auf den Kartenbereich gesetzt wird und die Objekte des Filters, z.B. Gewerbe sichtbar werden.”

    Ich erstelle hierzu ein separates Ticket für das Entwickler-Team. Ich halte dies für eine sinnvolle Erweiterung - wir müssen es aber erstmal bezüglich Zeit und Aufwand intern diskutieren.

    Mit freundlichen Grüßen

    Micha Pikora

  4. Karl-Hans Heinemann reporter

    Hallo Herr Pikora,

    danke für die ausführlichen Erläuterungen, insbesondere zu Punkt 1. Ich habe die Anpassungen entsprechend durchgeführt, das Problem des initialen Ladens beim Filter ist damit gelöst. Sie können von mir aus den Issue schließen.

    Mit freundlichen Grüßen

    Karl-Hans Heinemann

  5. micha.pikora

    Moin Herr Heinemann,

    wir haben es mit unseren Änderungen leider sehr knapp nicht mehr in den aktuellen Release 2.24.0 geschafft - sollte es eine 2.24.1 geben, spätestens aber bei 2.25.0 werden folgende Änderungen verfügbar sein:

    • Der Filter stellt “loadingStrategy”: ”all” nun automatisch für alle Layer ein, die gefiltert werden. “loadingStrategy”: ”all” braucht für Layer die gefiltert werden nun nicht mehr manuell eingestellt werden. (Neben Ihnen ist auch unsere Schulbehörde und sind auch weitere Kunden auf Probleme mit der bbox-Einstellung gestoßen.)
    • Die Checkbox zum Filtern im Browser-Extent löst nun unter strategy: active per Default eine direkte Filterung im aktuellen Browser-Extent aus. Dies kann durch Einstellen von searchInMapExtentProactive: false abgeschaltet werden.

    Vielen Dank für Ihre Hilfe den Filter zu verbessern. Ich schließe nun dieses Issue.

    Mit freundlichen Grüßen

    Micha Pikora

  6. Log in to comment