Zum Hauptinhalt springen

Tooltips konfigurieren

Hier wird beschrieben, wie Sie Tooltips erstellen können, welche in der Karte den Anwendern angezeigt werden.

Beispiel Tooltip für Schacht

Die Anwender sehen die Tooltips nur dann, wenn diese im Client aktiviert sind, die Karte eingeschaltet ist, sowie die Tooltips in der definierten Zoomstufe vorhanden sind.

Vorraussetzungen

Um Tooltips nutzen zu können, muss eine Datenbankverbindung eingerichtet sein. Unterstützt werden Oracle, SQLite oder PostgreSQL Datenbanken.

Datenbank Verbindung

Datenbankverbindung

Kartenverwaltung Karte

Eingerichtet werden die Tooltips in der Kartenverwaltung bezogen auf die jeweilige Karte. Über den Button TOOLTIPS KONFIGURIEREN, können diese erstellt oder entfernt werden.

Tooltip Konfiguration

Konfiguration

Dies ist der Dialog zur Konfiguration der Tooltips in einer Karte.

Dialog Tooltip Konfiguration

Add & Remove

Über den Button Add kann einer neuer Tooltip angelegt werden. Über den Button
Remove kann ein ausgewählter Tooltip gelöscht werden.

Min & Max Zoom Level

Schränken Sie den Zoomlevel so gut es geht ein, damit Sie die beste Performance für die Anwender bekommen.

Es macht Sinn den "Min Zoomlevel" so einzustellen, dass diese sichtbar sind, wenn die Elemente des Tooltips erstellt sind und deutlich am Bildschirm zu erkennen sind. Je niedriger sie den "Min Zoomlevel" einstellen desto mehr Abfragen auf die Datenbank werden im Hintergrund generiert.

Empfehlung ist den "Min Zoomlevel" nicht höher als 18/19 einzustellen, sodass die Informationen beim Überfahren der Kartenelemente mit der Maus auch unterscheidbar sind.

Suchradius

Suchradius

Der Wert des Suchradius bestimmt die ungefähre Größenordnung am Bildschirm. Wenn man mit der Maus über ein Element fährt bei dem ein Tooltip definiert ist, dann wird der Tooltip erst angezeigt wenn sich die Maus innerhalb des Suchradius befindet.

Datenbankverbindung

Hier ist die Datenbankverbindung auszuwählen.

Auswahl Datenbankverbindung

Definition der SQL Abfrage

Die angegebene SQL-Abfrage muss als erstes Feld die FID oder anderes eindeutiges Feld und als zweites das GEOM-Feld zurück liefern. Danach können beliebige Felder folgen. Sollten sie Funktionen verwenden, vergeben sie bitte einen ALIAS Namen.

Beispiel: select f.fid, f.geom, f.NAME_NUMBER from ww_manhole f where {filter}

Der Parameter {filter} wird zur Laufzeit durch die Spatialabfrage ersetzt. Dieser ist zwingend notwendig und muss nach der where clause stehen.

Beispiel für erweitertes SQL:

select f.fid, f.geom, round(f.area) as area from DFK_GEBAEUDE f where sdo_relate(f.geom,mdsys.sdo_geometry(2003,{srid},NULL,
mdsys.sdo_elem_info_array(1,1003,3), mdsys.sdo_ordinate_array{west},{south},{east},north})),
'mask=ANYINTERACT querytype=WINDOW') = 'TRUE'

Die Parameter in den geschweiften Klammern werden zur Laufzeit ersetzt.

Warnung

Der Wert des ersten Feldes (Schlüsselfeld) MUSS eindeutig sein! Ist dieser nicht eindeutig wird jeweils nur der erste Datensatz aller eindeutigen Schlüsselfeldwerte angezeigt.

Benutzten von Views oder Kombinationen von Tabellen (JOIN)

Kombiniert man Tabellen in der Tooltip SQL Abfrage, dann muss man einen eindeutigen Schlüssel bilden damit alle Werte angezeigt werden.

Beispiel:

Wir haben eine Tabelle BAUM und eine Tabelle BAUM_INFO.

In der Tabelle BAUM_INFO kann es zu jedem BAUM mehrerer Datensätze geben.

Gibt man nun folgenden Tooltip SQL an, dann ist das erste Feld nicht eindeutige!!

select f.fid, f.geom, a.fid, a.info from BAUM f, BAUM_INFO a  where f.fid = f.fid_baum and  {filter}
f.fida.fida.info
1101muss ersetzt werden
1127gegossen am 2.2.2015
1219gegossen am 7.2.2016
2277muss entfernt werden
2292steht im weg

Als Ergebnis kommen dann im Tooltip nur die ersten Datensätze und nicht alle, also:

f.fida.fida.info
1101muss ersetzt werden
2277muss entfernt werden

Damit man alle Datensätze bekommt muss das erste Feld eindeutig sein.

Dies erreicht man in dem man die FID Spalten aller Tabellen zu einem Feld kombiniert.

(f.fid||'-'||a.fid) as ufid

also den SQL so umformuliert:

select (f.fid||'-'||a.fid) as ufid, f.geom, f.fid, a.fid, a.info from BAUM f, BAUM_INFO a  where f.fid = f.fid_baum and  {filter}
ufidf.fida.fida.info
1-1011101muss ersetzt werden
1-1271127gegossen am 2.2.2015
1-2191219gegossen am 7.2.2016
2-2772277muss entfernt werden
2-2922292steht im weg

Damit sind die Werte der ersten Spalte eindeutig und alle Datensätze werden im Tooltip angezeigt.

Test SQL

Beim Ausführen der Funktion bzw. des Buttons TEST SQL wird das SQL getestet. Dazu wird sofern geöffnet der aktuelle Kartenausschnitt und Zoomstufe verwendet.

Meldung nach Ausführung von "Test SQL"

Es werden die Ausführungsdauer und der SQL-Query angezeigt der ausgeführt wird. Damit die beste Performance erreicht wird, sollte man immer genau prüfen inwiefern das SQL optimal ist. Wenn die Abfrage z.B. eine Sekunde dauert ist das langsam und wird bei jedem Zoom/Pan der Karte die Anzeige verzögern. (sofern die Tooltips aktiviert sind)

Die Ausführungsdauer schwankt selbstverständlich je nach Größe des Kartenausschnitt bzw. der Zoomstufe. Je mehr Elemente sichtbar sind, desto langsamer wird die Abfrage.

Tooltips bei Flächen

Wenn mehrere Flächen übereinanderliegen, dann kann der Tooltip die Infos der richtigen Fläche teilweise nicht sauber anzeigen. Dann muss man die Reihenfolge der Objekte im Select festlegen. Zum Beispiel kann nach der Flächengröße (Area) sortiert werden oder zum Beispiel nach einem Feld wo man eine Priorität festlegt. Wenn man nach der Flächengröße sortieren will, dann zeigt es so den Tooltip der kleinsten Fläche an.

Beispiel: select f.fid, f.geom from GRUENFLAECHEN f where {filter} order by area

Bei den Tooltips wird die Reihenfolge der Datensätze beachtet. D.h. wenn mehrere
Datensätze zu einem Objekt gefunden werden, wird nur der erste Datensatz angezeigt. Man kann dies durch setzten einer ORDER BY im SQL steuern.

Generell: Beachten Sie, dass performante und optimierte SQLs verwendet werden sollten, sonst wird die Geschwindigkeit von MapEdit beeinträchtigt. Zum Test hierzu die Funktion Test SQL verwenden, da bekommen sie Daten zur Ausführungsdauer.

Schablone

Beispiel Schablone

Bei der Schablone geben Sie den Text an, der im Tooltip angezeigt werden soll an.
Es können Werte aus dem Eintrag bei SQL verwendet werden. Dazu diese in geschweiften Klammern Beispiel: {NAME_NUMER} und in Großbuchstaben angegeben. Zeilenumbrüche müssen nicht durch Steuerzeichen angegeben werden, sondern werden einfach durch Drücken der ENTER-Taste eingegeben.

Beispiel Tooltip für Schacht

XAML (optional)

Optional kann XAML Code verwendet werden um Tooltips zu gestalten.

Warnung

Kenntnisse in XAML werden hierfür vorausgesetzt. MuM kann keinen kostenlosen Support für XAML anbieten. Besuchen Sie bitte eine Schulung oder verwenden Sie die zahlreichen Resourcen zum Thema XAML im Internet.

Man kann an jeder Stelle in dem XAML Code-Feldnamen in { } verwenden. Bei der Tooltipkonfiguration gibt man im Feld "Schablone" folgendes ein wenn man zum Beispiel ein Bild einbauen möchte:

<Grid Height="180" Width="250" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<Image Height="31" Source="https://www.mum.de/-/media/mum/images/configure-tooltips/logos/logo-mum-320x63.png" />
<TextBlock Text="Fid:{FID}"/>
</StackPanel>
</Grid>

Vor dem <Grid> dürfen keine Leerzeichen stehen und die Gross/Kleinschreibung muss genauso aussehen. Also <Grid> am Anfang und am Ende steht </Grid>. Ansonsten erkennt MapEdit nicht das es sich um einen XAML Tooltip handelt.

Da wo in diesem Beispiel die URL zu dem MuM Bild steht, könnte auch ein Feldnamen verwendet werden, beispielsweise {BILDURL} um ein dynamisches Bild anzuzeigen. Hier noch ein erweitertes Beispiel:

<Grid Height="180" Width="250" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
   <TextBlock Foreground="Blue" Width="250" Height="20" TextWrapping="Wrap">
         Wasserleitung: {DIAMETER_INSIDE}mm {FUNKTION} {MATERIAL}
   </TextBlock>
   <TextBlock Foreground="Red" Width="250" Height="20" TextWrapping="Wrap">
       <Bold>
         Für weitere Informationen bitte Formular öffnen.
      </Bold>
   </TextBlock>
   <Image Height="31" Source="https://www.mum.de/-/media/mum/images/configure-tooltips/logos/logo-mum-320x63.png" />
</StackPanel>
</Grid>

Tooltip mit XAML

Zeilenvorschub in XAML kann mit diesen Zeichen erreicht werden: &#10 oder hexadezimal &#x0A Wagenrücklauf in XAML kann mit diesen Zeichen erreicht werden: &#13 oder hexadezimal &#xD

XAML Tooltip mit direkter Anzeige hinterlegter Fotos

Man kann beim Tooltip hinterlegte Fotos gleich direktanzeigen lassen.

Beispiel:

Tooltip mit hinterlegtem Foto

Und wenn kein Bild vorhanden ist, dann klappt sich der Tooltip ein:

Tooltip ohne hinterlegtes Foto

Und hier der erforderliche XAML Code:

<Grid Background="LemonChiffon" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">

<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>

<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<Border Grid.Row="0" Grid.Column="0" Background="LightGray" />

<TextBlock Grid.Row="0" Grid.Column="0" Margin="5" Text="Incident/réparation des infrastructures du SIDEN." FontWeight="Bold" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="5" Foreground="Blue" Text="{DESCRIPTION}" TextWrapping="Wrap" />

<Image Grid.Row="2" Grid.Column="0" Margin="5" Height="Auto" Source="{LINKBILD1}" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="5" Foreground="DarkGray" Text="(autres image(s) --&gt; selection et ouvrir formulaire!)" TextWrapping="Wrap" />
</Grid>

Korrektur der EXIF Orientierung von Bildern

Ab Version 24.1.141

Mit Mobilen Geräten aufgenommene Bilder sind oft gedreht aufgenommen. Die Drehung wird oft in den EXIF Metadaten (Exchangeable image file format ) des Bildes mit gespeichert.

Leider korrigiert das Standard "Microsoft Image Anzeige Element", das Bilder anzeigen kann, diese Drehung nicht und Bilder werden dann verdreht angezeigt.

MuM hat daher ein eigenes Anzeige Element entwickelt das die Drehung aus den Metadaten des Bildes liest und dann die Drehung korrigiert.

Beispiel mit "Image" Control

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<Image Height="300" Source="http://localhost/Fotos/image127.jpg"/>
</StackPanel>
</Grid>

Beispiel mit MuM "XImageViewer" Control das die Drehung korrigiert.

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<XSystem:XImageViewer Height="300" Url="http://localhost/Fotos/ori/image127.jpg"/>
</StackPanel>
</Grid>
Bitte beachten

Beachten Sie das die Eigenschaft für die Url des Bildes "Url" heist und nicht "Source".
Wenn Sie Ihre Url bei der Eigenschaft "Source" angeben wird das Bild nicht gedreht.

Hinweise zur Benutzung von Tooltips

In dem MapEdit Projekt kann der Anwender die Tooltips bei Bedarf ein- und ausschalten:

Tooltips ausgeschaltet

An der Farbe dieses Optionenfeldes Tooltip kann man erkennen, ob das Laden der
Tooltips fertig ist oder noch andauert. Wenn es schwarz angezeigt wird, dann ist der
Tooltip fertig. Bei langsamen Selects kann das etwas dauern. Oder wenn man in einem Gebiet ist, wo es keine Objekte mit diesem Tooltip gibt, wird die Option ausgegraut angezeigt:

Tooltips aktiviert und geladen

Wenn die Tooltips nicht angezeigt werden, können Sie im MapEdit Desktop Client unter Log die Abfrage/SQL sich anzeigen lassen und prüfen ob hier ein Fehler aufgetreten ist.

Aufruf der Log Anzeige

Angezeigter SQL aus Logdatei

Solange sie den Zoombereich nicht verschieben, wird die Tooltip Abfrage nicht nochmals ausgeführt, da die Elemente bereits geladen sind. Daher muss die Karte an einen neuen Koordinatenbereich geschoben werden, bevor man einen Eintrag in den Log Optionen angezeigt bekommt.

Weiterführende Informationen

Hier finden sie einen Link zu einem Beispiel für eine Tooltip Konfiguration welche auf ein View mit SQL-Befehl EXISTS geht. Mit dem EXISTS-Operator wird geprüft, ob ein Datensatz in einer Unterabfrage vorhanden ist. Öffnen sie den Ordner Knowledgebase, dort befindet sich ein PDF zu den Tooltips.

Tooltip Beispiel View mit EXISTS

Hyperlinks sind nur in Verbindung mit Tooltips möglich.

Die Hyperlinks können durch das Drücken der Taste CTRL/STRG während der Tooltip sichtbar ist aktiviert werden. Beim Text Hyperlink tragen sie die zu öffnende URL ein. Wie bei den Tooltips können Feldwerte aus dem SQL in { } angegeben werden.

SQL im Tooltip: select f.FID, f.GEOM, f.NAME, f.SCHACHT_FID from VIEW_AW_SCHACHT f where {filter} order by area

Und hier ein Beispiel für einen Hyperlink Eintrag um auf einer Seite der Funktion zum Anzeigen von Bildern die FID dynamisch als Parameter mit zu übergeben: http:\\\\www.schachtbauwerke.de?ZeigeBilderZuSchacht={FID}

Es können auch komplexe Hyperlinks zur Weiterleitung konfiguriert werden.

Sofern ein Hyperlink angegeben ist wird dies unterhalb des Tooltips angezeigt und durch das Drücken der CTRL/STRG Taste ausgeführt.

Anzeige wenn ein Hyperlink definiert ist

Via Hyperlink können MapEdit Generic Formulare geöffnet werden.

Hierfür muss beim Hyperlink folgende Syntax verwendet werden

OPENDIALOG Datenbankverbindungsname.Tabelle.Vorlage, Filter

Beispiel:

OPENDIALOG STMORITZ_EW.EL_POINT.DEFAULT,FID={FID}

Via Hyperlink können beliebige EXE Dateien ausgeführt werden.

Hierfür muss beim Hyperlink folgende Syntax verwendet werden

START "Exe Datei name"

Beispiel:

START c:\meine.exe

Das kann man auch dazu verwenden wenn man gezielt nicht den Standardbrowser aufmachen will sondern einen anderen Browser.

Beispiele:

START CHROME https://www.google.de
START IEXPLORE https://www.google.de (Kein schreibfehler IEXPLORE not IEXPLORER)

Via Hyperlink können MapEdit C#/VB Scripte ausgeführt werden.

Hierfür muss beim Hyperlink folgende Syntax verwendet werden

RUNSCRIPT PluginName, Functionname, Parameter

für PluginName "null" angeben wenn es im normalen Scripting Code von MapEdit ist.

Beispiel:

RUNSCRIPT null,Test123,Hello {FID}

Das Vorgehen ist ähnlich wie bei "Skripte->Funktion via Ribbon Knopf aufrufen" https://help.mapedit.de/admin-guide/mapedit-appbuilder/scripts/ribbon-button-function

d.h.

Im Skript Editor auf das Register "Funktionen" gehen. Hinzufügen drücken und einen Funktionsnamen eingeben z.B. "Test123" und dann diese Code eingeben und danach KOMPILIEREN und Speichern drücken.

c# Beispiel:

public override void Execute(string parameter)
{
this.MessageBox("Test " + parameter)
}

VB Beispiel:

Public Overrides Sub Execute(parameter as string)

Me.MessageBox("Test " & parameter)

End Sub
Bitte beachten

Achten Sie darauf das rechts oben die richtige Sprache (also C# pder VB) gewählt ist!

Tooltips einem spezifischen Layer zuweisen

Ab Version 24.2.79

Wenn Sie bei "Layer" den Namen des Layers angeben dann wird der Tooltip nur angezeigt wenn der Layer eingeschalten ist.

Der Layername muss wie hier beschrieben ermittelt werden.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/scripts/api-script-switch-layer

Warnung

Wenn der Layername nicht exakt ist oder Leerzeichen davor oder danach hat dann wird die Funktion den Layer nicht erkennen und wird den Tooltip nie anzeigen.

Tooltips einzeln ein und ausschalten

Ab Version 24.2.80 können Tooltips einzeln ein und ausgeschaltet werden. Dazu befindet sich im Ebenen Fenster ein Register "Tooltips"

Die Tooltips sind nach Karte geordnet. Wenn eine Karte ausgeschalten ist werden die zugehörigen Tooltips inaktiv geschalten (grau dargestellt) und können nicht umgeschaltet werden.

Benutzen Sie den Schalter "sichtbar bei Start" um den Startzustand festzulegen.