Как я могу исправить проблему с радиусом GeoFire? - PullRequest
0 голосов
/ 18 июня 2020

Я пытался показать ближайших партнеров, доступных на карте пользователя, с помощью маркера , например, , а моя структура базы данных - 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);
        }
    });


}
...