GeoFire -

by Frank van Puffelen

HTML

<script src="http://static.firebase.com/v0/firebase.js"></script>
<script src="https://rawgit.com/firebase/geofire/master/src/geoFireUtils.js"></script>
<pre id='log'></pre>

JavaScript

// Set the center as Firebase HQ
var locations = {
    "FirebaseHQ": [37.785326, -122.405696],
    "Caltrain": [37.7789, -122.3917],
    "ZyLAB_US": [38.8884, -77.1809],
    "WhiteHouse": [38.8977, -77.0366],
    "DC": [38.532000, -77.810000]
};
var center = locations["WhiteHouse"];

// Query radius
var radiusInKm = 1.0;

// Get a reference to the Firebase public transit open data set
var transitFirebaseRef = new Firebase("https://publicdata-transit.firebaseio.com/");
var geoFireRef = transitFirebaseRef.child("_geofire");

var hashes = geohashQueries(center, radiusInKm*1000);
log(JSON.stringify(hashes));

hashes.forEach(function(hash) {
    var query = geoFireRef.child('i').startAt(null, hash[0]).endAt(null, hash[1]);
    log('query from '+hash[0]+' to '+hash[1]);
    query.on('child_added', function(snapshot) { log(snapshot.name()); });
    setTimeout(function() {
        log('stopping query from '+hash[0]+' to '+hash[1]);
        query.off('child_added');
    }, 15000);
});

function log(msg) {
    document.getElementById('log').innerText += msg + "\n";
}