Я пытался показать ближайших партнеров, доступных на карте пользователя, с помощью маркера , например, , а моя структура базы данных - this . Если я использую радиус 5000 в моем запросе geoFire, он показывает маркер, в противном случае он не показывает никаких маркеров на экране. Как я могу это исправить .... как будто я хочу показать только маркеры, которые находятся около 3 км. Спасибо.
private void getClosestPartners() {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("partnersAvailable");
GeoFire geoFire = new GeoFire(ref);
// creates a new query around [37.7832, -122.4056] with a radius of 0.6 kilometers
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(26.796700,80.876134), 3);
geoQuery.removeAllListeners();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
LatLng user = new LatLng(location.latitude, location.longitude);
String code = user.toString();
Toast.makeText(getApplicationContext(), code, Toast.LENGTH_LONG).show();
mMap.addMarker(new MarkerOptions().position(user).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marker)));
}
@Override
public void onKeyExited(String key) {
System.out.println(String.format("Key %s is no longer in the search area", key));
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
System.out.println(String.format("Key %s moved within the search area to [%f,%f]", key, location.latitude, location.longitude));
}
@Override
public void onGeoQueryReady() {
System.out.println("All initial data has been loaded and events have been fired!");
}
@Override
public void onGeoQueryError(DatabaseError error) {
System.err.println("There was an error with this query: " + error);
}
});
}