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
};

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']
};

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.

Des weiteren kann die Reihenfolger 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.