Permalink

12

Latitude Position in Blog einbinden

Das neue Google Spielzeug Latitude hat in der letzten Woche einige sinnvolle Erweiterungen gekriegt. Einerseits die Möglichkeit über ein Widget die aktuelle Position auf einer beliebigen Website anzuzeigen, anderseits die Möglichkeit über eine KML bzw. JSON Datei die aktuelle Position in anderen Anwendungen zu nutzen.

Latitude Batch/Widget

Latitude Batch/Widget

Damit hat man nun Möglichkeiten die eigene Position oder die Position einer Gruppe von Menschen dynamisch und aktuell in eigene Applikationen einzubauen. Für mich stand im Vordergrund dass ich einerseits den aktuellen Standort als Text in meiner About Seite einbauen kann, und anderseits gleichzeitig auch in regelmässigen Abständen den Standort in meinem Twitter Profil aktualisiere.

Die Standortfreigabe kann man übrigens in 3 Varianten einstellen, keine Freigabe, Freigabe des Standortes auf Stadtebene oder des besten verfügbaren Standortes.

Im nachfolgenden Beispiel wird nur der Ortsname übernommen, die Anzeige der aktuellen Strasse ist zwar möglich, man muss aber auf ein anderes Ergebnis zugreifen.

Die folgende Funktion ist für das Thesis Theme geschrieben und wird über einen Hook im Theme aktiviert. Natürlich könnte man ganz einfach daraus ein Plugin schreiben das dann über ein Widget oder einen Funktionsaufruf den Standort ausgibt. Wie die Struktur eines Plugins aussieht habe ich in dem Beitrag über die iPhone Push Notifikationen für WordPress Kommentare gezeigt.

In der folgenden Funktion muss die eigene Latitude ID angegeben werden. Diese findet man zuunterst auf dieser Seite in der KML und JSON Feed URL. Ohne die ID wird das Skript nicht funktionieren.

Insgesamt macht das Skript 2 Abfragen an die Google Server. Die erste ermittelt die aktuelle Position bei Latitude und gibt die Koordinaten und verschiedene Zusatzinformationen wie der Zeitpunkt der letzten Aktualisierung und die Genauigkeit der Daten zurück.

Die zweite Abfrage ermittelt durch Reverse Geokodierung den Namen des aktuellen Standortes. Dieser wird dann in einer WordPress Variablen abgelegt. Auch hier liefert die Google Maps API viele weitere Daten über den Standort zurück, von der Strasse bis zum Bezirksnamen kann man alles haben.

Die Aktualisierung des Standortes erfolgt alle 5 Minuten damit man nicht dauernd auf die Google API zugreifen muss und den Seitenaufbau im Blog damit verlangsamt. Den Wert kann man sogar noch weiter erhöhen da man ja bei Latitude normalerweise nicht alle 5 Minuten die Position neu setzt.

[php]
function latitudeposition() {
$lp = get_option("latitudeposition");

//funktion wird alle 5 Minuten ausgeführt um nicht unnötige Daten abzurufen
if ($lp[‚lastcheck‘] < ( mktime() – 300 ) ) {

$userId = "google Latitude User ID";

$url = "http://www.google.com/latitude/apps/badge/api?user=".$userId."&type=json";
// We get the content
$content = file_get_contents( $url );
// We convert the JSON to an object
$json = json_decode( $content );
$coord = $json->features[0]->geometry->coordinates;
$timeStamp = $json->features[0]->properties->timeStamp;
if ( ! $coord )
exit(‚This user doesn\’t exist.‘);
$date = date( ‚d/m/Y H:i:s‘, $timeStamp );
$lat = $coord[1];
$lon = $coord[0];

$url2 = "http://maps.google.com/maps/geo?output=json&oe=utf-8&ll=$lat,$lon&key=asdad&hl=de";
$content2 = file_get_contents( $url2 );
$json2 = json_decode( $content2 );

if ($json2->Placemark[2]->address) {
// Postleitzahl aus Ergebnis entfernen
$vowels = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
$place = str_replace($vowels, “, $json2->Placemark[2]->address);
$lp[‚place‘] = $place;
$lp[‚lastcheck‘] = mktime();
$lp[‚lastdate‘] = $date;
update_option("latitudeposition",$lp);

//optionale funktion zum setzen der Location bei Twitter
//settwitterlocation($lp[‚place‘]);
}
}

echo $lp[‚place‘];

}

add_action(‚thesis_hook_after_sidebar_1‘, ‚latitudeposition‘);[/php]

In einem zweiten Beitrag zeige ich dann wie die Funktion settwitterlocation() aussieht und wie damit die aktuelle Position an das Twitterprofil übergeben wird.

Für den obenstehenden Code wird keine Garantie geleistet dass er fehlerfrei ist oder dass er funktioniert. Wer damit spielen will sollte sich grundlegend in PHP auskennen und dies auf eigenes Risiko tun.

12 Kommentare

  1. Pingback: Twitter Location mit Google Latitude aktualisieren

  2. Die Funktion kann mit jedem Theme verwendet werden. Dazu hat man meistens im Theme Ordner drin ein File Functions drin. Das einzige was bei einem normalen Theme fehlt ist dann der Hook, in diesem Fall thesis_hook_after_sidebar_1. Du kannst aber die Funktion auch direkt in der Sidebar aufrufen.

  3. Sorry, ich muss noch mal nachfragen, wie rufe ich das denn direkt auf?
    Bei echo $lp[‚place‘]; kommt gar nicht, das ist leer. Oder wie kann ich das Ergebnis bzw. den Standort mit echo ausgeben?

  4. Ich habe folgendes in der seite page.php gemacht, nach dem ich mir Dein Script als plugin integriert habe:

    die Zeile 44 in Deinem Script habe ich entfernt. Leider funktioniert das nicht. Die interpretation der Seite stoppt an der Stelle, wo ich eingetragen habe.
    Einen letzten Tipp für mich? ;-)

  5. ok, script geht im comment nicht also so:

    php if (function_exists(‚latitudeposition‘)) :
    php latitudeposition();
    php endif;

  6. Pingback: Lars

  7. Pingback: dot8

  8. Habs mal so nach deiner Anleitung versucht und bin gescheitert. Dann habe ich herausgefunden, dass es inzwischen eine Funktion im Latitude Dashbord gibt, mit der man das inzwischen einfach über einen IFrame einbinden kann.

  9. Pingback: Spy myself: Locationtracking im Blog mit Find my iphone! • Der LeuMund.ch • apple, icloud, location, nsa, php, prism, privacy, script, wordpress

Jetzt kommentieren: