7

有没有人尝试在 Firebase 中存储和/或搜索地理编码(例如纬度/经度)?这是 MongoDB 中内置的功能,当我考虑将 Firebase 用作我们的后端时,我需要知道如何在 Firebase 中处理这种情况。

谢谢!

4

2 回答 2

9

Firebase的人们最近开源了一个库,允许您在 Firebase 中存储和查询位置数据。简而言之,这很容易实现,因为 Firebase 中的所有键都是字符串,并且 Firebase 支持startAt()endAt()查询,允许您对 geohashes 和边界框进行适当的窗口化。

有关实现细节和用法,请查看现场演示源代码和他们在 GeoFire 上的博客文章。

于 2014-01-18T21:35:39.857 回答
0

嘿,我刚刚使用 firebase 和 GeoFire 构建了一个实时谷歌地图。GeoFire 非常酷且易于使用。它允许您使用 lon lat 和 radius 进行查询。它返回一个键,您可以使用它来查询您的 firebase 数据库。您在创建 geoFire 对象时将密钥设置为您想要的任何内容。它通常是一个 ref,您可以使用它来获取与该距离关联的对象。

这是geoFire的链接: https ://github.com/firebase/geofire-js

这是一个示例用例:

你有一个 lon lat,你使用导航器得到:

var lon = '123.1232';
var lat = '-123.756';
var user = {
    name: 'test user',
    longitude: lon,
    latitude: lat
}
usersRef.push(user).then(function(response) {
    var key = response.key;
    var coords = [lon, lat];
    geoFire.set(key, coords, function(success){
         console.log('User and geofire object has been created');
    });
})

现在您可以使用以下命令查询用户:

// Set your current lon lat and radius
var geoQuery = geoFire.query({
    center: [latitude, longitude],
    radius: radiusKm
});
geoQuery.on('key_entered', function(key, location, distance) {
    // You can now get the user using the key
    var user = firebaseRefUrl + '/' + key;

    // Here you can create an array of users that you can bind to a   scope in the controller
});

If you are using google maps. I reccomend you use angular-google-maps. Its a really cool google maps directive that takes in an array of markers and circles. So when ever $scope.markers or $scope.circles change in the controller it will automatically be applied to the map without any messy code. They have very good documentation.

Here is a link: http://angular-ui.github.io/angular-google-maps/

于 2015-03-27T21:51:44.937 回答