Nun auch für Bilder: Abfrage von Location Tags möglich

Vor kurzem hatten wir über die Abfrage von Location Tags per Graph API berichtet. In unserem Artikel bemängelten wir den fehlenden Zugriff auf Location Daten von Bildern. Mit dem heutigen Update gilt diese Ausnahme nicht mehr: Wird ein Bild mit einem Place markiert, so ist diese Information nun verfügbar.

Abfrage per FQL und Graph API

Um die ID eines Places zu erhalten kann eine einfache FQL Abfrage gestartet werden. {OBJECT_ID} ist hierbei dies ID des Bildes:

SELECT place_id FROM photo WHERE object_id={OBJECT_ID}

Ebenso einfach wie die Abfrage ist die Antwort:

{
  "data": [
    {
      "place_id": {PLACE_ID}
    }
  ]
}

Details zum Place müssen in einem 2. Schritt per Graph API ausgelesen werden:

https://graph.facebook.com/{PLACE_ID}

Detailierte Infos zum Place – inkl. dem restlichen Overhead – gibt es bei der Abfrage per Graph API

https://graph.facebook.com/{PHOTO_ID}

In der Antwort sind gleich die Geo-Informationen enthalten:

...
  "place": {
    "id": "145673775505280",
    "name": "Sentry Conference Center 730 3rd Ave # 17 New York, NY 10017",
    "location": {
      "city": "New York",
      "state": "NY",
      "country": "United States",
      "latitude": 40.75293,
      "longitude": -73.973
    }
  }
...

Weiterhin nicht möglich ist die Abfrage über die Graph API mit dem Parameter „with=location“:

https://graph.facebook.com/me/photos?with=location

„Alles auf einen Schlag“

Um alle Bilder mit Location auf einen Schlag auszulesen, muss etwas in die FQL-Trickkiste gegriffen werden. Über einen Sub-Query lesen wir erst alle Alben IDs des aktuellen Nutzers aus, im Anschluss starten wir einen weiteren Sub-Query auf den Photo Table mit diesen IDs sowie einer „größer Null“ Bedinung für die Place ID. Zu guter Letzt noch die Abfrage auf den Place Table um die Geo-Informationen zu erhalten:

SELECT name, geometry, latitude, longitude, checkin_count FROM place WHERE page_id IN ( SELECT place_id FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me() LIMIT 5) AND place_id > 0 LIMIT 5)

In unserem Beispiel haben wir Limits angefügt, ansonsten kann es sein, dass die Antwort etwas auf sich warten lässt.

Für eine Einführung ins Thema sowie das Thema „Rechteabfrage“ bitte unseren Artikel „Abfrage von Location Tags nun per Graph API möglich“ zur Hand nehmen.

Stephan Alber
Stephan Alberhttp://about.me/stephanalber
Stephan Alber ist Entwickler, Designer, Unternehmer und (angehender) Buchautor. Hierbei arbeitet er mit Fortune 500 Kunden wie Nestle, Intel, Unilever, J.P. Morgan Chase & Co. Kuriose Bekanntheit erreichte er mit seiner Facebook App zur Anti-Atomkraft-Bewegung. Über das Netzphänomen berichteten u.a. der Focus und sowie das ZDF. Zur Zeit schreibt er in Zusammenarbeit mit O'Reilly Media (Deutschland) an seinem ersten Buch "Facebook Anwendungsentwicklung". Zu Zeit ist er bei der Social Media Agentur Deep Focus (New York City) tätig.

Neueste Artikel

Weekly Newsletter abonnieren. Kostenlos. Jederzeit kündbar!

Ähnliche Artikel

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein