Google-Maps

Für den Fall das Sie die OpenImmo-Erweiterung als PRO Version nutzen, müssen Sie ggf. einen Google-Maps API-Key beantragen und hinterlegen. Dazu wechslen Sie auf die folgende Website und melden sich mit Ihrem Google-Konto an: https://console.cloud.google.com/apis/credentials

Wenn dies geschehen ist klicken Sie auf Create credentials -> Api Key.

Google-Maps API-Schüssel anfordern

Sofern Sie hier noch kein API-Projekt bei Google angelegt haben, fordert Google Sie nun auf eines anzulegen. Wenn der Key erfolgreich erstellt wurde, wird ihnen dieser angezeigt.

Google-Maps API-Key erfolgreich erstellt

Dann klicken sie auf Restrict key. In der folgenden Ansicht wählen sie unter Application restrictions den Punkt HTTP referrers (websites) und tragen bei Website restrictions ein neues Item für Ihre Domain ein. Für die www.typo3-openimmo.de müsste hier im Feld Restrict key usage requests to the specified websites: *.typo3-openimmo.de/* stehen.

Google-Maps API-Key restrict

Darunter (API restrictions) verknüpfen sie Bibliotheken mit dem gerade erstellen API-Schlüssel. Dies wären die Google Maps JavaScript API, die Geocoding API und die Google Places API Web Service, welche wir für die Points of interest benötigen. Gegebenenfalls müssen sie diese erst im Menüpunkt "Library" für ihr Projekt aktivieren. Zum Schluss klicken sie auf Save.

Google-Maps API Bibliotheken auswählen

Den gerade generierten API-Schlüssel müssen jetzt noch in Ihrem TYPO3 bekannt machen, damit die OpenImmo-Erweiterung diesen nutzen kann. Dafür weisen Sie den API-Key einfach der folgenden TypoScript-Konstante zu:

themes.configuration.javascript.google.maps.apiKey = abc-xyz-...

Jetzt müssen Sie nur noch dafür sorgen, das die erforderlichen JavaScript-Bibliotheken in TYPO3 eingebunden werden. Für diese Aufgabe ist die nächste TypoScript-Konstante vorhanden:

themes.configuration.javascript.google.maps.rootlinePages = 123,666,...

In dieser geben Sie einfach komma-separiert alle Seiten-Uids an, auf denen Sie eine Google-Maps Karte nutzen. Da es sich bei der in der Konstante angegebenen Seiten-Uids um sogenannte rootline pages handelt, können Sie auch ganze Seitenzweige angeben. Würden Sie beispielsweise hier die Wurzelseite Ihrer Website angeben, so würden die Google-Maps Bibliotheken auf allen Seiten eingebunden werden.

Standard Geo-Koordinaten

Manchmal kommt es vor, das eine Google-Karte angezeigt wird, es aber aktuell keinen Fokus-Punkt gibt. Für diesen Fall können Sie standard Geo-Koordinaten angeben, die immer dann verwendet werden wenn es keinen Ort zum Anzeigen gibt.

plugin.tx_openimmo {
    settings {
        googleMaps {
            defaultGeoCoordinates {
                # Default latitude for google maps
                latitude = 51.4925921
                # Default latitude for google maps
                longitude = 7.4496687
            }
        }
    }
}

Ermittlung der Geo-Koordinaten

Manchmal kann es vorkommen, das die verwendete Kunden-Software keine Geo-Koordinaten überträgt. Um auch in diesem Fall die Google-Karten nutzen zu können, ermöglicht es die OpenImmo-Erweiterung die Geo-Koordinaten anhand der Adresse zu ermitteln. Dafür sind folgende TypoScript-Einstellungen vorhanden:

plugin.tx_openimmo {
    settings {
        googleMaps {
            fetchGeoCoordinates {
                # Uses country and postal code for grabbing geo location
                # But only when there are no geo coordinates available!
                active = 1
                # Save the grabbed geo coordinates in Immobilie record
                # That's recommend, because of Google-Maps API restrictions and better performance.
                save = 1
                # API-Key for serverside requests (protected by IP address!)
                apiKey = {$themes.configuration.extension.openimmo.googleMaps.fetchGeoCoordinates.apiKey}
                # Immobilie fields, which are used for fetching the geo coordinates
                useFields {
                    # Multiple fields - the key identifies the immobilie node identifier.
                    # Search string is build in giving order.
                    # If you don't need such a detailed marker, set some values to 0.
                    geo_land_isoLand = 1
                    geo_plz = 1
                    geo_ort = 1
                    geo_regionalerZusatz = 1
                    geo_strasse = 1
                    geo_hausnummer = 1
                }
                # Convert country codes to country label (for fetching geo coordinates)
                isoToCountry {
                    DEU = Deutschland
                    AUT = Östereich
                    CHE = Schweiz
                }
                report {
                    email = {$themes.configuration.extension.openimmo.googleMaps.fetchGeoCoordinates.report.email}
                    subject = {$themes.configuration.extension.openimmo.googleMaps.fetchGeoCoordinates.report.subject}
                }
            }
        }
    }
}

Dabei ist zu beachten, das die Geo-Koordinaten anhand der aktivierten useFields-Parameter ermittelt werden. Das heißt es wird je nach Einstellung nicht der genaue Punkt der Immobilie genommen, so dass mögliche Interessenten nicht direkt dort hinfahren können. Des Weiteren muss ein zusätzlicher API-Key bereitgestellt werden, welcher eine Beschränkung nach IP-Adresse besitzt (nicht nach HTTP-Referrer) - es muss die Places und Geocoding API erlaubt werden. Um einen Report zu erhalten, falls mal eine Adresse nicht richtig ermittelt werden kann, kann eine E-Mailadresse hinterlegt werden an die bei jeder Ermittlung eine Mail geschickt wird.

Clustering der Übersichtskarte

Wenn Sie über sehr viele nah bei einanderliegende Immobilien verfügen, macht es Sinn das Marker-Clustering zu aktivieren. Mit dem Marker-Clustering werden nah aneinanderliegende Marker gruppiert und mit einer Zahl versehen. Wird dieser Gruppierungs-Marker angeklickt, so wird an dieser Stelle in die Karte gezoomt, so dass die Gruppierung aufgelöst werden kann.

Die Konfiguration des Clustering erfolgt mit Hilfe von TypoScript:

plugin.tx_openimmo {
    settings {
        googleMaps {
            clustering {
                # Activate/deactivate clustering
                active = 0
                # Path for clustering images
                imagePath = typo3conf/ext/openimmo_pro/Resources/Public/Images/MapClustering/m
            }
        }
    }
}

Weitere Konfigurationen finden Sie im Setup-TypoScript.

Points of interest

Für die Verwendung der Points of interest benötigt Ihr Google-Maps API-Key Zugriff auf die Places-API.

Bitte Berücksichtigen Sie, das die Places-API von Google eine Begrenzung von 60 Orten pro Anfrage hat. D.h. wenn in Ihrem angegebenen Radius nicht alle Orte gefunden werden, kann es sein das dieses Limit erreicht wurde. Sie müssten dann den Radius verkleinern.

Den Radius für die Points of interest können Sie mit Hilfe von TypoScript anpassen:

plugin.tx_openimmo {
    settings {
        googleMaps {
            pointsOfInterest {
                # Radius in meter
                radius = 500
            }
        }
    }
}

Die angebotenen Orts-Typen können Sie ebenfalls via TypoScript konfigurieren. Welche Typen es gibt können Sie hier nachlesen: https://developers.google.com/places/supported_types?hl=de

Die Definition sieht wie folgt aus:

plugin.tx_openimmo {
    settings {
        googleMaps {
            pointsOfInterest {
                available {
                    # Key for google place identifier
                    grocery_or_supermarket {
                        # Label für den Button
                        label = Supermärkte
                        # Inhalt des Markers
                        innerHtml = <i class="fa fa-shopping-cart"></i>
                    }
                    restaurant {
                        label = Restaurants
                        innerHtml = <i class="fa fa-cutlery"></i>
                    }
                    # ..weitere Einträge
                }
            }
        }
    }
}

Datenschutz

Wenn Sie es mit dem Datenschutz sehr genau nehmen und die Google-Karte erst anzeigen möchten, wenn der Besucher etwas bestätigt hat, ist dies auch möglich. Wenn die Nutzung der Google-Karten noch nicht bestätigt wurde, binden Sie die Google-Bibliotheken einfach gar nicht ein (dies könnte mit einer TypoScript-Condition passieren, welche ein Cookie abprüft). Erst wenn die Nutzung bestätigt wurden und die Google-Bibliotheken gefunden wurden, werden die Karten von der Openimmo-Erweiterung initialisiert.