【发布时间】:2018-05-31 19:24:33
【问题描述】:
我有一个包含 700 多个对象的 firebase 数据库(实时数据库)。他们每个人都有纬度和经度。我想知道是否有某种方法可以查询它们并仅显示靠近设备位置的那些。我试图理解 geofire,但我做不到。 这是 firebase 中一个对象的示例: 这就是我用来显示所有数据的方法:
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
mDatabase = FirebaseDatabase.getInstance().getReference();
Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());
//Get firebase info for each gym
Gym gym=dataSnapshot.getValue(Gym.class);
gym.setGym_id(dataSnapshot.getKey());
//Set custom marker with firebase info
LatLng newLocation= new LatLng(Double.parseDouble(gym.getLatitude()),Double.parseDouble(gym.getLongitude()));
if (dataSnapshot.hasChild("raid")){
Marker marker= mMap.addMarker(new MarkerOptions()
.position(newLocation)
.title(gym.getName())
.snippet(gym.getUrl())
.icon(BitmapDescriptorFactory.fromBitmap(bMapRaid)));
marker.setTag(gym);
} else {
Marker marker= mMap.addMarker(new MarkerOptions()
.position(newLocation)
.title(gym.getName())
.snippet(gym.getUrl())
.icon(BitmapDescriptorFactory.fromBitmap(bMap)));
marker.setTag(gym);
}
}
【问题讨论】:
-
您正在寻找 Geofire,这是一个将纬度和经度编码为单个值并允许查询其范围的库。见stackoverflow.com/questions/37759727/… 和stackoverflow.com/questions/40272146/firebase-location-query/…
标签: android firebase firebase-realtime-database