GoogleGeoCoding Latitude und Longitude

PHP5 Klasse zur einfachen Ermittlung von Geo-Codes Latitude und Longitude über Google



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 />';
 
$cGoogleGeoCoding->getKoordinate("") den gewünschten Ort übergeben. Als Rückgabe erhält man ein Array mit folgendem Aufbau:

array[0] => Rückgabe des Google-Status. 200=OK
array[1] => Latitude
array[2] => Longitude