Wie integriere ich Google Maps in das Medienverzeichnis?


Das Medienverzeichnis erlaubt die Anzeige der erfassten Einträge auf einer Google Maps Karte.

API-Key einrichten

Für den Einsatz von Google Maps im Medienverzeichnis muss vor der Inbetriebnahme ein Google Maps API-Key erworben und bei den Grundeinstellungen hinterlegt werden.

Informationen dazu sind in der Dokumentation von Google Maps aufzufinden. Gehen Sie für die Einrichtung des API-Schlüssels wie folgt vor:

  1. Erwerben Sie einen API-Key für Google Maps gemäss Dokumentation. Wichtig: Der API-Schlüssel muss Zugriff auf die APIs Maps JavaScript API und Geocoding API haben, damit die Integration im Medienverzeichnis korrekt funktioniert. Die Geocoding API wird für die Auflösung von Adressen zu Koordinaten (in der Erfassungsmaske) benötigt. Beispiel: API-Schlüssel Konfiguration bei Google

     

  2. Nachdem Sie einen API-Key für Google Maps erworben haben, öffnen Sie den Bereich Administration > Grundeinstellungen > System > Mehr, hinterlegen Sie den API-Key bei der Option Google Maps API-Schlüssel und speichern Sie die getätigte Konfiguration:

 

Google Maps aktivieren

Die Verwendung von Google Maps zur Darstellung der erfassten Einträge auf einer Karte kann pro Formular individuell aktiviert werden:

  1. Öffnen Sie den Bereich Anwendungen > Medienverzeichnis > Einstellungen > Formular Vorlagen.

  2. Wählen Sie die gewünschte Formular Vorlage aus, von welchem Sie die Einträge auf einer Google Maps Karte anzeigen lassen möchten und öffnen Sie dieses in der Bearbeitungsmaske. Alternativ kann auch ein neues Formular angelegt werden.

  3. Fügen Sie ein neues Formularfeld durch Betätigung der Schaltfläche neues Feld hinzufügen hinzu:

     

  4. Geben Sie dem Feld einen Namen (Feldname) und wählen den Feldtyp Google Map aus:

     

  5. Speichern Sie die Änderung am Formular durch Betätigung der Schaltfläche Speichern

Einträge auf Karte platzieren

Erfassen oder Bearbeiten Sie nun Einträge des mit Google Maps erweiterten Formular. Bei der Bearbeitungsmaske wird beim entsprechenden Google Maps-Feld folgende Eingabemaske angezeigt:

 

Die Erfassung des Standortes ist über folgende drei Arten möglich:

  1. Adresse
    Falls die Adresse des Eintrages bekannt ist, kann der Standort durch Eingabe der Felder Strasse, Ort, PLZ und Betätigung der Schaltfläche Suchen gesetzt werden.

  2. Koordinaten
    Falls die Koordinaten des Eintrages bekannt sind, kann der Standort durch Eingabe der Felder Längengrad, Breitengrad und Betätigung der ENTER-Taste gesetzt werden.

  3. Drag&drop
    Falls die genaue Adresse des Eintrages nicht bekannt ist, kann der Standort mittels drop&drop des Markers oder Klick an der gewünschten Stelle auf der Karte gesetzt werden.

Es werden auf der Google Maps Karte nur jene Einträge angezeigt, welche einen Standard hinterlegt haben. Also als Längen- und Breitengrad nicht wie Werte 0/0 aufweisen.

Übersichtskarte im Frontend

Im Frontend kann eine Übersichtskarte angezeigt werden, welche alle entsprechenden Einträge enthält. Eine Übersichtskarte von ausgewählten Einträgen kann in den folgenden Bereich eingebunden werden:

  1. Alle Einträge
    Auf der spezifischen Anwendungsseite MAP (Anwendung: Medienverzeichnis / Bereich: map) kann mit dem Platzhalter [[MEDIADIR_GOOGLE_MAP]] eine Google Maps Karte angezeigt werden, welche alle Einträge aus dem Medienverzeichnis enthält.

  2. Such-Resultate
    Auf jeder Anwendungsseite des Medienverzeichnis, bei welcher die Such-Funktion eingebunden ist, kann mit dem Platzhalter [[MEDIADIR_SEARCH_GOOGLE_MAP]] eine Google Maps Karte angezeigt werden, welche die von der Suche gefundenen Einträge enthält.

  3. Einträge einer Kategorie / Ebene
    Auf jeder Anwendungsseite des Medienverzeichnis, bei welcher eine Kategorie oder Ebene ausgewählt ist, kann mit dem folgenden Block-Konstrukt eine Google Maps Karte angezeigt werden, welche die Einträge der ausgewählten Kategorie oder Ebene enthält:

    1 <!-- BEGIN mediadirCategoryLevelDetail -->[[MEDIADIR_CATEGORY_LEVEL_GOOGLE_MAP]]<!-- END mediadirCategoryLevelDetail -->

Standort-Karte auf Detailansicht im Frontend

Die Standort-Karte zeigt nur einen ausgewählten Eintrag an und steht zur Detailansicht eines Eintrages zur Verfügung. Die Google Maps Karte wird auf der Detailansicht über die normalen Platzhalter zur Anzeige des entsprechenden Formular-Feldes eingebunden.

Angenommen die ID des Formular-Feldes, welchem der Feldtyp Google Map zugewiesen wurde, ist 181, dann wird die Google Maps Karte auf der Detailansicht wie folgt eingebunden:

1 <!-- BEGIN mediadir_inputfield_181 -->[[MEDIADIR_INPUTFIELD_VALUE]]<!-- END mediadir_inputfield_181 -->

Zugriff via API

Auf das Google Maps Objekt kann auf der Übersichtskarte wie folgt zugegriffen werden:

1 var map = cx.variables.get('map_1', 'mediadirGoogleMap');

Ist die Google Maps Karte auf der Detailansicht eines Eintrages eingebunden, so kann auf das Google Maps Objekt wie folgt zugegriffen werden:

1 var map = cx.variables.get('map_FIELD-ID_ENTRY-ID', 'mediadirInputfield_FIELD-ID_ENTRY-ID_map');

Marker

Auf die Marker der Einträge kann im Frontend via JavaScript zugegriffen werden. Bei der Übersichtskarte kann auf die Marker wie folgt zugegriffen werden:

1 var mapMarkers = cx.variables.get('map_1_markers', 'mediadirGoogleMap');

Ist die Google Maps Karte auf der Detailansicht eines Eintrages eingebunden, so kann auf die Marker wie folgt zugegriffen werden:

1 var mapMarkers = cx.variables.get('map_FIELD-ID_ENTRY-ID_markers', 'mediadirInputfield_FIELD-ID_ENTRY-ID_map');

FIELD-ID und ENTRY-ID müssen durch die Formular-Feld-Id und ID des angezeigten Eintrages ersetzt werden.

mapMarkers ist ein Objekt, welches die Marker der jeweiligen Einträge als Kind-Elemente enthält. Die Kind-Elemente werden dabei über deren Eintrags-ID identifiziert. Beispiel:

1 2 3 4 5 6 7 8 var mapMarkers = cx.variables.get('map_1_markers', 'mediadirGoogleMap'); for (var key in mapMarkers) { if (!mapMarkers.hasOwnProperty(key)) { continue; } alert('Längengrad: ' + mapMarker.lat) alert('Breitengrad: ' + mapMarker.lon) }

Ein Marker Objekt verfügt über die folgenden Properties:

Property

Beschreibung

Property

Beschreibung

lat

Längengrad

lon

Breitengrad

info

HTML-Code für die Anzeige der Info-Box

hideInfo

true falls die Info-Box bei der Initialisierung angezeigt werden soll. Ansonsten false

click

JavaScript-Code (als String) welcher beim click-Event auf den Marker ausgeführt werden soll

mouseover

JavaScript-Code (als String) welcher beim mouseover-Event auf den Marker ausgeführt werden soll

mouseout

JavaScript-Code (als String) welcher beim mouseout-Event auf den Marker ausgeführt werden soll

Jeder erfasste Eintrag wird mit einem Marker auf der Karte dargestellt: