嘿,我刚刚完成建设用火力和GeoFire实时谷歌地图这篇文章。 GeoFire非常酷且易于使用。它允许你使用lon lat和radius来查询。它返回一个可用于查询您的Firebase数据库的密钥。您可以在创建geoFire对象时设置密钥,以满足您的需求。它通常是一个可以用来获取与该距离相关联的对象的引用。
这里是geoFire链接: https://github.com/firebase/geofire-js
下面是一个例子使用案例:
你有一个经度纬度,你得到了使用导航:
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
});
如果你正在使用谷歌地图。我建议你使用角度谷歌地图。 它是一个非常酷的谷歌地图指令,需要一系列标记和圆圈。因此,当控制器中的$ scope.markers或$ scope.circles发生变化时,它将自动应用到地图上,而不会有任何杂乱的代码。他们有很好的文档。
这里是一个链接: http://angular-ui.github.io/angular-google-maps/
什么他的建议是,你把经度优先级标记列表,并通过纬度优先另一个列表。然后,您查询两个列表,并查看列表相交的位置。 –