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