Как я могу обновить маркеры при перемещении карты?
Я использую библиотеку 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))
}
}