Location services integration for Activity Stream

I was working the other night to create an integration module that would tie the existing Activity Stream module for Drupal into the Brightkite location-based social network.

The idea is that users can check in at their current location using Brightkite and have their Drupal site update their location within the site based on their last known location - handy if you want a little map that shows where you are, for example, but you could do whatever you wanted with those locations, and even use them to extend a social network you might be building up in Drupal.

While I was fighting with the SimplePie feed parsing library to work out why it didn't like the feeds from Brightkite, John McKerrell suggested that some integration for his new Mapme.at service would be nice too.

So, the first two services to be supported by the new Activity Stream location services project are Brightkite and Mapme.at. I'd also like to extend this to other services like Yahoo's Fire Eagle and Google Latitude at some point, but neither of them are quite so simple to integrate with, the former because it has no public location feeds for users and requires authentication, and the latter because it doesn't share any of its data at all (boo!).

In their most basic form, the modules pull in the updates from these services and they get included in your activity stream along with your Twitter updates and the like, but also if you have Location module installed and the user locations module enabled (plus a patch for Activity Stream for now), your user will be updated with the latest coordinates from the location service you use.


The geo patch for Activity Stream will go into the next release. Nice work, I'm excited to play with it.

Cheers Adam! I would actually like to take a closer look to see what more we can do there. For example, I'd love to be able to get more structured data out of the feeds (if SimplePie can handle that) and also pass more data back to Activity Stream itself (e.g. the location data, but also tags and things) so that they can be added to the nodes that get created.

Maybe I'll take a look next week while I'm at DrupalCon :)