Geo-Code-Klasse
Nachdem ich für ein Projekt die Latitude und Longitude einer Adresse benötigt habe, jedoch keinen simplen Code gefunden habe, habe ich mir kurzerhand eine eigene PHP5 Klasse geschrieben.
Das Script baut auf Google auf und erfordert somit einen Google-Key um die Daten anfordern zu können.
Die Klasse ist sehr einfach gehalten. Somit auch für Anfänger eine gute Grundlage zum weiteren Ausbau
<?php /* GoogleGeoCoding.class.php5 PHP5-Klasse zur Ermittlung von Geo-Codes über einen Google-Key Autor : Joachim Ruf Erstellt am: 2009.05.20 Doku: 1.1 2009-05-20 : start der Dokumentation */ class GoogleGeoCoding { /** @var $string $googleKey : Google-Key für die Suche */ private $googleKey; /** * @desc Konstruktor. Klasse zur Ausgabe von Fortschrittsbalden. */ function __construct ( $googleKey ) { $this->googleKey = $googleKey; } /** * @desc Verbindet sich mit den eingegebenen Suchdaten zu Google, lädt die Daten als XML-Datei herunter, * verarbeitet die erhaltenen Daten und gibt die Daten im Array aus. * @return array im Format array(0=>status, 1=>latitude, 2=>longitude) */ public function getKoordinate ( $strassePlzOrt ) { if( strlen($strassePlzOrt) >= 1 ) // Wenn Daten eingetragen wurde, durchlaufe diese $addr = str_replace(" ", "+", trim($strassePlzOrt)); // Erzeuge aus Array einen String im Format hausnummer+strasse+postleitzhal+ort $addr = "http://maps.google.com/maps/geo?q=".$addr."&output=xml&key=".$this->googleKey; $data = file_get_contents($addr); // Zu Google verbinden und XML-Datei herunterladen $data = utf8_decode ($data); // XML-Datie zu utf8 konvertieren $xml = new SimpleXMLElement($data); // SimpleXMLElement mit XML-Daten füllen //Koordinaten auslesen - trennen - und in 2 variablen speichern list($longitude, $latitude, $altitude) = explode(",",$xml->Response->Placemark->Point->coordinates); list($status) = explode(",",$xml->Response->Status->code); // Gesammelte Daten ausgeben return array(0=>$status, 1=>$latitude, 2=>$longitude); } } ?>
// Neue Instanz erstellen $cGoogleGeoCoding = new GoogleGeoCoding("googleKeyHier"); // Suche starten und Ergebnisse ausgeben $arrData = $cGoogleGeoCoding->getKoordinate("Rheingutstraße 30 78462 Konstanz"); echo 'Statuscode: '.$arrData[0].'<br />'; echo 'latitude: '.$arrData[1].'<br />'; echo 'longitude: '.$arrData[2].'<br />';