ip2map – geografische IP-Anzeige mit Ajax

Google bietet viele zumeist kostenlose Dienste an, unter anderem auch das beliebte Google-Maps welches auch für die eigene Homepage verwendet werden kann, nicht nur um einen Anfahrtsplan anzuzeigen.

Um den ungefähren Standort einer IP-Adresse (Wikipedia) in einer Landkarte anzuzeigen, wird das sog. Geotargeting (Wikipedia) verwendet.

1. Voraussetzungen

Dazu ist neben einem kostenlosen “Google Maps API key” eine Datenbank nötig, welche der IP-Adressen einer geografischen Position zuordnen kann. Der Hersteller MaxMind bietet mit GeoLite City eine kostenlose Datenbank (LGPL-Lizenz) welche dazu optimal geeignet ist.

2. Installation von PEAR Net_GeoIP

In Kombination mit dem PHP PEAR-Paket Net_GeoIP können nun Anfragen an die Datenbank gestellt werden um diese grafisch ausgegeben zu können. Dieses Paket befindet sich zwar unverändert seit einem Jahr im Beta-Stadium, kann aber einfach installiert werden über:

pear install channel://pear.php.net/Net_GeoIP-1.0.0RC1

3. Programmfunktion mit AJAX (index.php)

Aktuell ist der Web 2.0 Standards (Wikipedia) das Maß der Dinge, warum auch hier AJAX (Wikipdia) eingesetzt wird. Dazu gilt es zu allererst zu beachten, dass die Browser intern unterschiedlich die Daten anfordern. Um dies zu umgehen gibt es eine Möglichkeit um XMLHttpRequest Anfragen im Internet-Explorer und in anderen Browsern gleichermaßen zu behandeln. Eine Erklärung der einzelnen Funktionen der Google-Map lässt sich über die umfangreiche API-Dokumentation nachschlagen.

4. Zugriff auf die Datenbank (GeoLiteCity.php)

Aus der Datenbank werden nur die Koordinaten-Werte (Latitude/Longitude) benötigt. Weitere Ausgaben wie Stadt und Region sind ebenfalls möglich. Diese würden sich dann ebenfalls in der Landkarte anzeigen lassen.

5. Finale

Beispiel
Download

Author: admirableadmin

Hello World! Ich bin Andreas Peichert und entwickle und programmiere Software seit 2000. Zurzeit arbeite ich als Senior Solution Architect.

Leave a Reply

Your email address will not be published. Required fields are marked *