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:
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.
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:
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;
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 auftruegesetzt, 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 unterViewer/Darstellungsvariantendefiniert 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.jsverwendet 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 |
|---|---|
|
Anzahl der Zeilen, die pro Seite in der Ergebnistabelle angezeigt werden, sobald das Paging aktiv ist. |
|
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 |
|---|---|
|
Maximale Anzahl an Einträgen, die in der Ergebnisliste gerendert werden. Übersteigt die
Trefferanzahl diesen Wert, werden nur die ersten |
Ü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:
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:
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.