TYPO3 Plugin:

geocoding

TYPO3 Erweiterung: Geocoding

Bietet Dienste für die Abfrage von Google Maps GeoCoding API v3 in Ihren eigenen Erweiterungen.

  • Erweiterungsschlüssel: geocoding
  • Autor: Benjamin Mack, b:dreizehn GmbH, 2012-2018
  • Lizenziert unter: GPL 2+
  • Erforderliche TYPO3 8.7+ (siehe ältere Versionen von EXT:geocoding für die Unterstützung früherer TYPO3-Versionen)
  • Der gesamte Code kann auf github gefunden und entwickelt werden: https://github.com/b13/t3ext-geocoding/

Einführung

Mit "Geocoding" können Sie Informationen über eine Adresse abrufen und in der DB speichern, indem Sie das TYPO3 Caching Framework zur Speicherung der Abfragen und Ergebnisse verwenden.

Konfiguration

Holen Sie sich einen Google API-Schlüssel (https://code.google.com/apis/console) und fügen Sie ihn der Konfiguration der Erweiterung im Extension Manager hinzu. Weitere Informationen finden Sie hier: https://developers.google.com/maps/documentation/geocoding/?hl=de

Wie man es benutzt

Instanziieren Sie die Klasse über GeneralUtility::makeInstance() oder den Objektmanager in Ihrer TYPO3-Erweiterung. Dann verwende die öffentlichen Methoden.

GeoService

Die Erweiterung bietet Ihnen eine saubere PHP/TYPO3-Erweiterungsabstraktion, um Breitengrad und Längengrad für eine bestimmte Adressleiste zu erhalten. Dies geschieht in der PHP-Klasse GeoService.php Service.

GeoService->Koordinaten berechnenFürAlleProtokolleInTabelle

Wenn Sie Benutzereingaben abfragen müssen, ist eine JavaScript-API wahrscheinlich der beste Weg, dies zu tun. Dies kann jedoch auch über JS erfolgen, indem Sie GeoService->getCoordinatesForAddress($street = NULL, $zip = NULL, $city = NULL, $country ='Germany') aufrufen

$geoServiceObject = GeneralUtility::makeInstance(\B13\Geocoding\Service\GeoService::class);
$coordinates = $geoServiceObject->getCoordinatesForAddress('Breitscheidstr. 65', 70176,'Stuttgart','Deutschland');

Die Methode führt internes Caching der gleichen Requests durch.

GeoService->Koordinaten berechnenFürAlleProtokolleInTabelle

Die Methode GeoService->calculateCoordinatesForAllRecordsInTable($tableName, $latitudeField, $longitudeField, $streetField, $zipField, $cityField, $countryField, $addWhereClause) ermöglicht es Ihnen, Felder für den Längen- und Breitengrad für bestehende Adressen zu erstellen. Der Aufruf kann einfach in einen Scheduler-Task eingebaut werden (siehe Beispiel unten).

Auf diese Weise können Sie die Informationen über eine Adresse eines DB-Datensatzes (z.B. tt_address) abrufen und die Daten in der Datenbanktabelle speichern, da Sie in Ihrer Erweiterung zwei neue Felder latitude und longitute zu dieser Zieltabelle hinzufügen (dafür sind keine TCA-Informationen erforderlich).

Beispiel: Verwendung von GeoService als Scheduler-Task für tt_address

Legen Sie dies in EXT:my_extension/Classes/Task/GeocodingTask.php:

<?php
namensraum MyVendor\MyExtension\Task;

/**
 * Klasse, die vom Scheduler aufgerufen werden soll
 * o3-K9-Koordinaten für alle tt_address Datensätze finden
 */
klasse GeocodingAufgabe erweitert \TYPO3\CMS\Scheduler\Task\AbstractTask
{
    /**
     * Funktion, die vom Scheduler aus ausgeführt wird.
     */
    öffentliche Funktion execute()
    {
        /** @var \B13\Geocoding\Service\GeoService $geocodingService */
        $geocodingService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\B13\Geocoding\Service\GeoService::class);
        $geocodingService->Koordinaten berechnenFürAlleSätzeInTabelle(
            tt_address',
            "Breitengrad",
            "Längengrad",
            Adresse',
            "Zip",
            "Stadt",
            Land'
        );
        gibt true zurück;
    }
}

Und auch diese Klasse in ext_localconf.php deiner Extension registrieren:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['Scheduler']['Aufgaben'][\MyVendor\MyExtension\Task\GeocodingTask::class] = [
    Erweiterung' × × × ×=>'myextension',
    title' × × × × × × => × Geocoding der Adresssätze',
    Beschreibung' <=>'Überprüfen Sie alle tt_address Datensätze auf geocoding Informationen und schreiben Sie sie in die Felder'
];

RadiusService

Die andere Hauptdienstklasse wird für die Berechnung der Entfernungen zwischen zwei Koordinaten (RadiusService->getDistance() und die Abfrage von Datensätzen aus einer DB-Tabelle mit Breiten- und Längengrad (funktioniert perfekt in Verbindung mit calculateCoordinatesForAllRecordsInTable()) bei einem bestimmten Radius und Basiskoordinaten.

Dank / Beiträge

Vielen Dank an

  • Die Besatzung von b13, die diese Funktionen nutzt
  • Jesus Christus, der mein Leben gerettet hat.

2013-07-05, Benni.

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:GEOCODING ist auf

0.51 % aller TYPO3 installiert.

  • 1.11 % aller TYPO3 9.5.x Installationen installiert
  • 0.69 % aller TYPO3 8.7.x Installationen installiert
  • 0.38 % aller TYPO3 7.6.x Installationen installiert
  • 25 % aller TYPO3 7.2.x Installationen installiert
  • 0.13 % aller TYPO3 6.2.x Installationen installiert
  • 0.06 % aller TYPO3 6.1.x Installationen installiert
  • 0.45 % aller TYPO3 4.7.x Installationen installiert
  • 0.76 % aller TYPO3 4.5.x Installationen installiert
  • 0.72 % aller TYPO3 4.4.x Installationen installiert
  • 2.07 % aller TYPO3 4.3.x Installationen installiert
  • 0.68 % aller TYPO3 4.2.x Installationen installiert
  • 2.34 % aller TYPO3 4.1.x Installationen installiert

Aktualität:GEOCODING ist auf dem neusten Stand (v.2.0.0) bei

13.9 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 0.39 % aller TYPO3 8.7.x Installationen
  • 0.14 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

GEOCODING Version:Verteilung nach installierten Versionen

  • 81.25 % GEOCODING v.2.0.0
  • 18.75 % GEOCODING v.1.2.0

PHP Version:GEOCODING wird benutzt mit

  • 5.33 % PHP/7.1
  • 10.67 % PHP/7.0
  • 6.67 % PHP/5.6
  • 6.67 % PHP/5.5
  • 12 % PHP/5.4
  • 30.67 % PHP/5.3
  • 25.33 % PHP/5.2
  • 1.33 % PHP/5.1
  • 1.33 % PHP/4.4

Gosign-Responsive Index: TYPO3 Installationen nutzen GEOCODING zu

  • 18 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 8 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 18 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 57 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen GEOCODING zu

  • 29 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 50 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 12 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 5 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 9 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=36680 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>