© saicle/Shutterstock.com
Kolumne: PEARcing

PEAR Packages vorgestellt


Heute geht es gleich um zwei neue Packages: Services_Libravatar und Services_OpenStreetMap. Beide sind noch im Alphastandard, aber zumindest für kleine Gimmicks auf der eigenen Webseite bereits problemlos nutzbar.

Services_OpenStreetMap

Die meisten sind vermutlich bei Services_OpenStreetMap hellhörig geworden und träumen schon von ihrem eigenen Tile-Server. Ganz soweit ist das Package allerdings nicht, primär kapselt es das OSM API und ist damit vor allem für diejenigen interessant, die Daten auslesen beziehungsweise hinzufügen wollen. Leider gibt es auch noch keinen eleganten Weg, um einen eingebetteten Kartenausschnitt einer Position zu erzeugen, aber an der Stelle können wir mit dem API wenigstens etwas bauen. Installieren wir zuerst das Package pear install Services_OpenStreetMap-alpha. Für den Teil der API-Funktionen, den wir benötigen, ist keine Anmeldung erforderlich. Deswegen ist auch nicht notwendig, einen OSM-Account zu besitzen. Als Folge daraus gestaltet sich auch die Initialisierung der Klasse sehr einfach:

require_once 'Services/OpenStreetMap.php'; $osm = new Services_OpenStreetMap();

Für den Kartenausschnitt benötigen wir konkrete Geokoordinaten, doch woher nehmen wir sie? Dafür gibt es die Funktion getCoordsOfPlace. Sie nimmt eine Zeichenkette entgegen, um eine zugehörige Position zu ermitteln. Sie funktioniert ganz analog zur Suche eines Ortes auf der Webseite selbst. Wenn ein Ort beziehungsweise ein Geodatensatz gefunden wurde, dann liefert die Funktion ein Array mit der geografischen Länge (engl.: Longitude) und der geografischen Breite (engl.: Latitude) jeweils in Grad. Für den Kartenausschnitt reicht allerdings ein einfacher Wert nicht aus, stattdessen müssen wir ein Rechteck aufspannen und die Geokoordinaten der linken oberen Ecke sowie der rechten unteren ermitteln. Dazu können Sie einfach einen bestimmten Betrag von den oben ermitteln Geokoordinaten abziehen für die linke obere Ecke und hinzurechnen für die rechte untere:

$coord = $osm->getCoordsOfPlace('Berlin, Deutschland'); $lon1 = $coord['lon'] - 0.05; $lon2 = $coord['lon'] + 0.05; $lat1 = $coord['lat'] - 0.05; $lat2 = $coord['lat'] + 0.05;

Den Betrag können Sie variieren, je kleiner der Abstand zwischen den beiden Ecken ist, desto größer ist der Zoomfaktor. Damit können wir nun den Iframe für die Kartendarstellung generieren, entscheidend ist im URL die Angabe des bbox-Parameters, der den Kartenausschnitt beschreibt:

echo '<iframe width="425" height="350" frameborder="0" scro...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang