嘿,我刚刚使用 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
});
如果您使用的是谷歌地图。我建议您使用 angular-google-maps。它是一个非常酷的谷歌地图指令,它接受一系列标记和圆圈。因此,当控制器中的 $scope.markers 或 $scope.circles 发生变化时,它会自动应用于地图,而不会出现任何杂乱的代码。他们有很好的文档。
这是一个链接:
http ://angular-ui.github.io/angular-google-maps/