Как я могу обновить маркеры при перемещении карты?

Я использую библиотеку Algolia InstantSearch для Android.

Это мой запрос:

searcher.setQuery(new Query().setAroundLatLngViaIP(true).setAroundRadius(5000)).

Но когда я перемещаю карту, маркеры остаются на месте. Как я могу отобразить новые маркеры на карте, когда я перемещаю вид местоположения карты?

1 ответ

Таким образом, вы хотите прослушать изменения карты и каждый раз, когда пользователь перетаскивает карту и перезагружает результаты? Вот что вы должны сделать:

public class AwesomeCameraActivity extends FragmentActivity implements
        OnCameraIdleListener,
        OnMapReadyCallback {

    private GoogleMap mMap;

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

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

    @Override
    public void onMapReady(GoogleMap map) {
        mMap = map;

        mMap.setOnCameraIdleListener(this);

        // Show the initial position
        mMap.moveCamera(CameraUpdateFactory
                .newLatLngZoom(new LatLng(YOUR_LATITUDE, YOUR_LONGITUDE), 10));
    }

    @Override
    public void onCameraIdle() {
        // The camera / map stopped moving, now you can fetch the center of the map
        GeoPoint center = mMap.getProjection().fromPixels(mMap.getHeight() / 2, mMap.getWidth() / 2);
        double centerLat = (double)center.getLatitudeE6() / (double)1E6;
        double centerLng = (double)center.getLongitudeE6() / (double)1E6;

        // Now fire a new search with the new latitude and longitude
        searcher.setQuery(new Query().setAroundLatLng(new AbstractQuery.LatLng(centerLat, centerLng)).setAroundRadius(5000))
    }
}
Другие вопросы по тегам