Usability

Einige Funktionen der API lassen sich über sogenannte Usability-Konstanten steuern. Diese können in der custom.js für einzelne Karten oder gesamte Portalseiten gesetzt werden.

ClickBubble

Die ClickBubble verbessert die Bedienbarkeit des Viewers auf Touch-Geräten. Werkzeuge, die einen Klick in die Karte voraussetzen (z. B. Identify), sind auf Touchscreens oft schwer zu bedienen, da ein Fingerklick ungenau sein kann. Wird die ClickBubble aktiviert, erscheint sie bei allen Werkzeugen, die eine Klick-Interaktion erfordern:

../../../_images/image4.png

Anstatt direkt in die Karte zu klicken, zieht der Anwender die Bubble an die gewünschte Stelle. Die Spitze der Bubble markiert den genauen Punkt für die Aktion. Lässt man die Bubble los, kehrt sie automatisch in die obere rechte Ecke zurück und führt die gewünschte Aktion aus (z. B. Identify).

Klickt der Anwender auf die Bubble (ohne sie zu ziehen), öffnet sich eine Beschreibung zur Bedienung.

Kontextmenü-Bubble

Einige Werkzeuge erfordern eine rechte Maustaste (z. B. das Kontextmenü für das Messen oder Editieren eines Sketches). Dafür kann eine zusätzliche ContextMenu Bubble aktiviert werden. Der Anwender kann diese anklicken, um das Kontextmenü zu öffnen, oder an eine bestimmte Position ziehen, um genau dort eine Aktion auszuführen (z. B. einen bestimmten Vertex verschieben oder löschen, rechtwinklig zur Kante konstruieren etc.).

../../../_images/image51.png

Diese Funktion ermöglicht auch auf mobilen Geräten eine präzise Steuerung von Konstruktionen mit Snapping.

Aktivierung in custom.js

Diese Funktionen sind standardmäßig deaktiviert und müssen explizit in der custom.js aktiviert werden:

// ClickBubble aktivieren
webgis.usability.clickBubble = true;
// ContextMenu Bubble aktivieren
webgis.usability.contextMenuBubble = true;

Da diese Funktionen nur auf Touch-Geräten sinnvoll sind, kann die Methode isTouchDevice() genutzt werden:

webgis.usability.clickBubble =
webgis.usability.contextMenuBubble = webgis.isTouchDevice();

Sketch-Optimierungen

Standardmäßig kann der Anwender bei einem Sketch auf einen Vertex klicken, um ein Popup-Menü zu öffnen:

../../../_images/image61.png

Falls die rechte Maustaste oder die ContextMenu Bubble verfügbar ist, wird dieses Menü nicht mehr benötigt. Es kann jedoch weiterhin explizit aktiviert werden:

webgis.usability.sketchMarkerPopup = true;  // Empfehlung: false!!

Konstruktionswerkzeuge einschränken

In manchen Anwendungen sind nicht alle Konstruktionswerkzeuge erforderlich. Insbesondere die erweiterten Konstruktionsoptionen richten sich an versierte Anwender und können in bestimmten Karten deaktiviert werden:

webgis.usability.constructionTools = false;

Komplettes Kontextmenü deaktivieren

Falls das Kontextmenü beim Zeichnen nicht benötigt wird, kann es mit folgendem Code deaktiviert werden:

webgis.usability.sketchContextMenu = false;

Tastatur-Shortcuts für Sketch

Beim Konstruieren eines Sketches können verschiedene Tastatur-Shortcuts genutzt werden:

  • A: Fügt einen Vertex auf einer Kante hinzu.

  • D: Löscht einen Vertex.

  • Strg: Ermöglicht das Aufziehen eines Fensters zur Mehrfachselektion von Vertices, die dann gemeinsam verschoben oder gelöscht werden können.

Diese Funktionalität kann über folgende Schalter gesteuert werden:

webgis.usability.allowSketchShortcuts = true;
webgis.usability.allowSelectSketchVertices = true;

Inhaltsverzeichnis

Um das Verhalten des Inhaltsverzeichnis anzupassen gibt es folgende Settings:

  • makePresentationTocGroupCheckboxes (``true`` / false)): ist diese Option auf true gesetzt, werden bei aufklappbaren Gruppen-Layern im Inhaltsverzeichnis automatisch Checkboxes angeboten, wenn alle darunter liegenden Layer/Darstellungsvarianten ebenfalls eine Checkbox aufweisen. Mit dieser Checkbox können dann alle darunter liegenden Layer mit einem Klick sichtbar oder unsichtbar geschalten werden.

  • orderPresentationTocContainsByServiceOrder (true/ ``false``): Damit wird festgelegt, das im Inhaltsverzeichnis die Container nach der Zeichenreihenfolge der Dienste sortiert werden. Ansonsten gilt die Sortierung aus dem CMS, wie sie unter Viewer/Darstellungsvarianten definiert ist. Verwendet man keine Darstellungsvarianten sondern dynamische Inhaltsverzeichnisse, würde die Container ohne diese Option alphabetisch sortiert.

webgis.usability.makePresentationTocGroupCheckboxes = true;

webgis.usability.orderPresentationTocContainsByServiceOrder = true;  // default: false

Toolbox

Mit diesen Einstellungen können die Werkzeuge in der Toolbox konfiguriert werden. Die Einstellungen erfolgen pro Werkzeug, die Syntax ist wie folgt:

webgis.usability.toolProperties['{tool-id}'] = {
     container: 'a custom container for this tool', // optional
     name: 'a custom name for this tool', // optional
     tooltip: 'a custom tooltip for this tool', // optional
     priority: 100 // optional, default: 0
};

Die {tool-id} ist die ID des Werkzeugs. Man bekommt die Ids der einzelnen Werkzeuge über die WebGIS API /rest/tools

Ein Anwendungsbeispiel ist beispielsweise, wenn Werkzeuge in einem anderen Container (Reiter), verschoben werden sollten, zB:

webgis.usability.toolProperties['webgis.tools.fullextent'] =  {
      container: 'Start'
};
webgis.usability.toolProperties['webgis.tools.identify'] = {
  container: ['Start','Abfragen'], priority: 10
};
webgis.usability.toolProperties['webgis.tools.boxzoomin'] = { priority: 12 };

Hier wird das Werkzeug Vollausdehnung in den Reiter Start verschoben und das Werkzeug Abfragen in den Reiter Start und Abfragen. Sollte ein Werkzeug also in mehreren Reitern sichtbar sein, muss der Container als Array angegeben werden. Das Werkzeug Box-Zoom erhält eine höhere Priorität und landet damit im Reiter (Container) weiter vorne (Mit priority kann die Reihenfolge der Werkzeuge innerhalb eines Containers beeinflusst werden).

Des weiteren kann die Reihenfolge der Container bestimmt werden:

webgis.usability.toolContainerOrder = [
    'Start',
    'Abfragen',
    'Messwerkzeuge',
    'Zeichnen',
    'Navigation'
];

Wird hier nichts angegeben, entspricht die Reihenfolge der Container jener Reihenfolge, mit der die Werkzeuge in die Karte eingefügt wurden.

Bemerkung

Ändert man die toolProperties der Werkzeuge, sollte immer auch die Container Reihenfolge definiert werden, da sonst die Reihenfolge der Container eher zufällig vergeben wird.

Bemerkung

Es müssen bei der Reihenfolge nicht alle Container angegeben werden. Gibt es einen Container, der nicht in der Liste ist, wird dieser immer am Ende angezeigt.

Solle ein Werkzeug nicht in der UI angezeigt werden, obwohl es beispielsweise im MapBuilder eingefügt wurde, kann dies daran liegen, dass es in der toolProperties Konfiguration nicht definiert ist. In diesem Fall muss es mit einem leeren Objekt definiert werden:

webgis.usability.toolProperties['{tool-id}'] = {
    visibility: 'hidden' // optional, default: 'visible', other possible value: 'hidden'
};

Bemerkung

Das macht Sinn, wenn ein Werkzeug nur für angemeldete Benutzer sichtbar sein soll.

if(!webgis.hmac.userName()) {
   webgis.usability.toolProperties['webgis.tools.serialization.loadmap'] = { visibility: 'hidden' };
   webgis.usability.toolProperties['webgis.tools.serialization.savemap'] = { visibility: 'hidden' };
}

Hier sollte auch gleichzeit der Anonyme Zugriff auf die entsprechenden REST Endpunkte deaktiviert werden, damit die Werkzeuge nicht über die URL aufgerufen werden können. Dazu ist in der entsprechenden Tool-Section in der api.config eine Eintrag allow-anonymous-access mit dem Wert false notwendig, z.B.:

<section name="tool-savemap">
   <add key="allow-anoymous-access" value="false" />
   <!-- other settings -->
</section>

<section name="tool-loadmap">
   <add key="allow-anoymous-access" value="false" />
   <!-- other settings -->
</section>

Tastatur-Shortcuts

Die WebGIS API bietet die Möglichkeit, Tastatur-Shortcuts für verschiedene Aktionen zu verwenden. Diese Shortcuts können in der custom.js aktiviert werden, um die Benutzerfreundlichkeit zu verbessern.

webgis.usability.useAdvancedKeyShortcutHandling = true;

Der Standardwert ist false, was bedeutet, dass die erweiterten Tastatur-Shortcuts für WebGIS API Anwendungen nicht aktiviert sind. Verwendet man den WebGIS Viewer, wird standardmäßig auch die custom-recommendations.js geladen, die diesen Wert auf true setzt. Im Viewer sind die Shortcuts also standardmäßig aktiviert.

Sind die erweiterten Tastatur-Shortcuts aktiviert, können folgende Aktionen durchgeführt werden:

Bearbeiten-Selektionswerkzeug

  • Leertaste: Nur ein Objekt selektieren. Es wird das Objekt ausgewählt, dass dem geklickten Punkt am nächsten ist.

  • E: Wie oben, nur dass sofort die Bearbeiten Maske geöffnet wird.

  • D: Wie oben, nur dass sofort die Löschen Maske geöffnet wird.

Bemerkung

Voraussetzung: das Selektionswerkzeug muss aktiv sein (Punkt Selektion) und ein Thema aus der Liste muss ausgewählt sein.

Auswahllisten Pro Verhalten

Parametriert man im CMS Editmasken Felder als Auswahlliste (Typ Domain), kann in der CMS Dialog unter optional: Domain Behaviour (experimental) das Verhalten der Auswahlliste auf Pro gesetzt werden. Damit wird die Auswahlliste als select2 dargestellt, was eine bessere Benutzererfahrung bietet.

Voraussetzung ist, dass die select2 Bibliothek für diesen Zweck verwendet soll. Standardmäßig, ändert sich das Pro Verhalten der Auswahllisten erst dann, wenn die webgis.usability.select_pro_behaviour Konstante in der custom.js gesetzt wird.

webgis.usability.select_pro_behaviour = "select2";

Bemerkung

Derzeit ist der einzig mögliche Werte für diese Konstante select2. Alle anderen Werte werden ignoriert und das Verhalten der Auswahllisten bleibt unverändert.

Bemerkung

Ein Beschreibung des Pro Verhaltens der Auswahllisten findet sich in der CMS Domain Verhalten ändern.

Schnellsuche

Für die Schnellsuche können über die webgis.usability.quickSearch-Konfiguration verschiedene Einstellungen vorgenommen werden:

// allows enter geocodes in quicksearch
//    default is false, but set to true for the view in custom-recommendations.js
webgis.usability.quickSearch.displayMetadata.geocodes = true;

// select first result on enter
//    default is false, but set to true for the view in custom-recommendations.js
webgis.usability.quickSearch.selectFirstOnEnter = true;  //

// minimum length of search term to trigger quick search
//  default is 0, if larger than 0, qick search will not show info item, when
//  user clicks in the search field
webgis.usability.quickSearch.minLength = 0;

// delay in ms before quick search is triggered after user stops typing
//  default is 0, but set to 300 for the view in custom-recommendations.js
//  0 means no delay, but that can lead to performance issues if the search is triggered on every keystroke
webgis.usability.quickSearch.debounceDelay = 300

Mit selectFirstOnEnter wird automatisch der erste Vorschlagswert ausgewählt, wenn der Benutzer die Eingabetaste drückt. Ansonsten bewirkt Enter, eine komplette Suche mit dem bisher eingegeben Suchbegriff (ident mit Klick auf das Lupensymbol).

Bemerkung

Hat der Anwender die Vorschläge durch die Eingabe auf einen Vorschlag eingeschränkt, entspricht ENTER immer einem Selektieren dieses Vorschlagwertes, egal was hier eingestellt wird.

Nachbarschaft Berechnen

Für die Nachbarschaft Berechnen Funktion können über die webgis.usability.defaultBufferDistance die Standard Pufferdistanz in Metern festgelegt werden:

// default buffer distance in meters
webgis.usability.defaultBufferDistance = 15; // default is 30 meters

Bemerkung

Ab Version 8.x

Ergebnisliste

  • webgis.usability.showQueryLayerNotVisbleNotification: Mit diesem Schalter kann eine Benachrichtigung aktiviert werden, wenn der Ergebnis-Layer eines Abfragewerkzeugs nicht sichtbar ist. Die Benachrichtigung informiert den Anwender darüber, dass die Ergebnisse möglicherweise nicht angezeigt werden, weil der Layer ausgeblendet ist. Es wird empfohlen, diese Benachrichtigung zu aktivieren, um die Benutzerfreundlichkeit zu verbessern und Missverständnisse zu vermeiden. Die Benachrichtigung erscheint als roter Balken über den Ergebnissen. Ein Klick auf die Benachrichtigung schaltet den Layer sichtbar. Standardmäßig ist diese Benachrichtigung aktiviert.

    Zum Deaktivieren der Benachrichtigung kann folgender Code in der custom.js verwendet werden:

    webgis.usability.showQueryLayerNotVisbleNotification = false; // default is true
    

Paging in der Ergebnistabelle

Bei Abfragen mit sehr vielen Treffern (z. B. Identify, Suche) kann die Ergebnistabelle im Viewer sehr lang werden, was die Übersichtlichkeit und Performance beim Rendern beeinträchtigen kann. Über die Konfiguration webgis.usability.queryResultsTable kann für die Ergebnistabelle ein client-seitiges Paging aktiviert werden:

webgis.usability.queryResultsTable = {
     pageSize: 100,        // Anzahl Zeilen pro Seite in der Ergebnistabelle (client-seitiges Paging)
     pagingThreshold: 1000 // Paging greift erst, wenn mehr als so viele Ergebnisse vorhanden sind
                            // (z.B. 1000 = bisheriges Verhalten bleibt bei "klassischen" AGS-Ergebnismengen
                            // unveraendert, Paging startet erst darueber hinaus)
};

Attribut

Beschreibung

pageSize

Anzahl der Zeilen, die pro Seite in der Ergebnistabelle angezeigt werden, sobald das Paging aktiv ist.

pagingThreshold

Legt fest, ab wie vielen Ergebnissen das Paging überhaupt greift. Liegt die Anzahl der Treffer einer Abfrage unter diesem Wert, wird die Ergebnistabelle wie bisher komplett (ohne Paging) angezeigt. Damit bleibt das gewohnte Verhalten bei „klassischen“, überschaubaren Ergebnismengen unverändert, und das Paging kommt erst bei entsprechend großen Ergebnismengen zum Tragen.

Bemerkung

Diese Einstellung betrifft ausschließlich die Darstellung der Ergebnisse im Client (Paging der bereits geladenen Tabelle). Wie viele Ergebnisse serverseitig überhaupt für eine Abfrage ermittelt und an den Client geliefert werden, wird davon nicht beeinflusst.

Begrenzung der Ergebnisliste (mobile Ansicht)

Neben der Ergebnistabelle (webgis.usability.queryResultsTable, siehe oben) gibt es auch eine Ergebnisliste, die z. B. in der mobilen Ansicht anstelle der Tabelle verwendet wird. Diese Liste kennt kein Paging, sondern rendert immer alle Einträge auf einmal. Bei sehr vielen Treffern kann das die Performance beim Rendern beeinträchtigen. Über die Konfiguration webgis.usability.queryResultsList kann daher eine Obergrenze für die Anzahl der gerenderten Listeneinträge festgelegt werden:

webgis.usability.queryResultsList = {
     maxItems: 1000 // Ergebnisliste (zB mobile Ansicht, kein Paging) rendert maximal so viele Eintraege.
                     // Bei mehr Ergebnissen wird ein Hinweis angezeigt, dass alle Ergebnisse in der
                     // Tabellenansicht (webgis_queryResultsTable) verfuegbar sind.
};

Attribut

Beschreibung

maxItems

Maximale Anzahl an Einträgen, die in der Ergebnisliste gerendert werden. Übersteigt die Trefferanzahl diesen Wert, werden nur die ersten maxItems Einträge angezeigt und dem Anwender wird ein Hinweis eingeblendet, dass alle Ergebnisse in der Tabellenansicht (webgis.usability.queryResultsTable) verfügbar sind.

Übersichtskarte (Minimap)

Die Übersichtskarte (Minimap) zeigt standardmäßig die aktuelle Ausdehnung der Hauptkarte an. Die Minimap wird über das Leaflet.Minimap Plugin realisiert. Die Optionen für die Minimap können über die webgis.usability.miniMapOptions Konfiguration angepasst werden.

// default options for the minimap
webgis.usability.miniMapOptions = {
     zoomLevelOffset: -5,
     position: 'bottomleft',
     toggleDisplay: true,
     minimized: true
 };

Die verfügbaren Optionen sind in der Plugin Dokumentation beschrieben.

Metadaten

Metadaten für Darstellungsvarianten (Themen) werden in der Regel im Inhaltsverzeichnis angezeigt. Dabei gibt es die Möglichkeit, die Metadaten als i-Button oder als Link-Button anzuzeigen.

Auf Touchdisplays (Handy) kommt es hier oft zu verwechslungen beim klicken auf die Checkboxen bei den Darastellungsvarianten, da dabei oft der i-Button für die Metadaten geklickt wird. Darum gibt es jetzt folgende Optionen:

// Zeigt die Metadaten Links auch in Copyright bereich der Karte
webgis.usability.show_presentation_metadata_in_copyright = true;

// Zeigt i-Buttons im TOC
webgis.usability.show_metadata_i_button_toc = true;

// Zeigt link-Buttons im TOC
webgis.usability.show_link_button_in_toc = true;

Um die oben beschriebene Verwechslung beim Klicken zu vermeiden, wird die custom-recommendation.js folgendermaßen erweitert:

webgis.usability.show_metadata_i_button_toc = webgis.isMobileDevice() !== true;

In diesem Fall, wird der i-Button im TOC nicht mehr auf Handys angezeigt. Die Metadaten Link findet man hier nur mehr im Copyright Bereich der Karte.

Hintergrundkarten (Basemaps)

Im Container Hintergrundkarten (Basemaps) werden standardmäßig nur die ersten drei Kacheln angezeigt. Die restlichen Hintergrundkarten kann der Anwender über einen Pfeil manuell auf- bzw. wieder einklappen:

../../../_images/image9.png

Ausgeklappt sieht der Anwender alle verfügbaren Hintergrundkarten, inklusive zusätzlicher Basemaps wie z. B. Overlays, die dann über eigene Checkboxen ein- und ausgeblendet werden können:

../../../_images/image10.png

Mit folgendem Schalter kann festgelegt werden, ob dieser Container beim Hinzufügen von Diensten (z. B. wenn dadurch zusätzliche Hintergrundkarten/Overlays zur Karte kommen) automatisch vollständig aufgeklappt wird, anstatt nur die ersten drei Kacheln anzuzeigen:

webgis.usability.expandBasemapsOnAddServices = true;  // default: false

Ist die Option aktiviert, sieht der Anwender sofort alle verfügbaren Hintergrundkarten, ohne den Container zuerst manuell aufklappen zu müssen.