Warning: Use of undefined constant AFF_LINK - assumed 'AFF_LINK' (this will throw an Error in a future version of PHP) in /home/leumund/public_html/wp-content/plugins/appstore/definitions.php on line 22

Warning: Use of undefined constant AFF_LINK - assumed 'AFF_LINK' (this will throw an Error in a future version of PHP) in /home/leumund/public_html/wp-content/plugins/appstore/definitions.php on line 22
Latitude Position in Blog einbinden - leumund.ch
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. Pingback: Lars

  3. Pingback: dot8

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

Jetzt kommentieren: