Как в java получать актуальные координаты границ видимой части google maps при зуме и перемещении?

Пишу андроид приложение на Java. Мне нужны координаты границ видимой области на экране, чтобы потом отправить GET запрос к апи и расположить на карте маркеры в этой видимой области пользователя.

Пыталась делать это через

LatLngBounds b = mMap.getProjection().getVisibleRegion().latLngBounds; 

в результате было все по нулям, загуглила, там пишут это нужно делать в OnLoadedMap() методе.

Не могу понять как это реализовать, чтобы каждый раз при смещении/зуме карты все подгружалось с актуальными данными. Сейчас моя maps activity так выглядит

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMapLoadedCallback {

    private RequestQueue queue;
    private View mapView;
    private SupportMapFragment supportMapFragment;
    public LatLng pnt;
    private GoogleMap mMap;
    LatLngBounds b;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        assert mapFragment != null;
        mapFragment.getMapAsync(this);
        queue = Volley.newRequestQueue(this);
    }


    @Override
    public void onMapReady(@NonNull GoogleMap googleMap) {
        mMap = googleMap;
        LatLng spb = new LatLng(59.93, 30.36);
        mMap.addMarker(new MarkerOptions().position(spb).title("me"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(spb));


        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);

        assert mapFragment != null;
        mapView = mapFragment.getView();

        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            return;
        }

        googleMap.setMyLocationEnabled(true);
        googleMap.getUiSettings().setMyLocationButtonEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);
        googleMap.getUiSettings().setCompassEnabled(true);

        getRequest(); //отправляю запрос

    }


    private void getRequest() {
        String url = "https://recyclemap-api-master.rc.geosemantica.ru/public/points?bbox=30.06409999999994%2C59.66599141309655%2C30.564100000000025%2C60.208985857750235&size=1&restricted=false&offset=0";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONObject data = response.getJSONObject("data");
                            JSONArray points = data.getJSONArray("points");
                            for (int i = 0; i < points.length(); i++) {
                                JSONObject point = points.getJSONObject(i);
                                String id = point.getString("pointId");
                                String title = point.getString("title");
                                String geom = point.getString("geom");
                                geom = geom.replaceAll(("[\\[\\](){}]"),"");
                                geom = geom.replaceAll("[a-zA-Z]", "");

                                String[] coord = geom.split(" ");

                                pnt = new LatLng(Double.parseDouble(coord[1]), Double.parseDouble(coord[0]));
                                mMap.addMarker(new MarkerOptions().position(pnt).title("").icon(BitmapDescriptorFactory.fromResource(R.drawable.mark)));



                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        queue.add(request);

    }


    @Override
    public void onMapLoaded() {

    }
}

Ответы (0 шт):