Я делаю проект для школы, и я новичок в android dev и google map api.
В моем приложении у меня есть список координат, и я использовал кластерные маркеры, чтобы отобразить их на карта. Я создал это поведение, когда каждый раз, когда текст менялся, список обновлялся, а затем появлялись маркеры.
Думайте об этом, как о фильтрации маркеров карты в реальном времени.
Проблема в том, что даже если список координат изменился, маркеры на карте не будут обновляться, пока камера не переместится ни пользователем, ни вызовом map.moveCamera (), что было моей работой около. Проблема в том, что при многократном вводе текста камера будет сдвигаться на север, даже с map.cameraMove (currentCameraPosition). Я пытался заставить его двигаться вперед и назад, но он всегда был бы смещен в направлении, которое заставляет меня думать, что что-то нужно делать с точностью.
Вопрос в том, есть ли другой способ обновить sh маркеры карты?
Спасибо!
мой метод "refre sh"
public static void refresh() {
double cameraLat = map.getCameraPosition().target.latitude;
double cameraLng = map.getCameraPosition().target.longitude;
LatLng cameraLatLngIncreased = new LatLng(cameraLat + 0.0000001f, cameraLng + 0.0000001f);
LatLng cameraLatLngDecreased = new LatLng(cameraLat - 0.0000005f, cameraLng - 0.0000001f);
if(movedUp){
map.moveCamera(CameraUpdateFactory.newLatLngZoom(cameraLatLngDecreased, map.getCameraPosition().zoom - 0.001f));
movedUp = false;
}else{
map.moveCamera(CameraUpdateFactory.newLatLngZoom(cameraLatLngIncreased, map.getCameraPosition().zoom + 0.001f));
movedUp = true;
}
}
Мой метод обновления маркера
public void updateMapClusters() {
if (clusterManager == null) {
return;
}
clusterManager.clearItems();
myClusterItemList.clear();
List<Coordiantes> list = myFilter.getQueriedList();
setupClusterMarkers(list);
refresh();
}
Как настроить searchView
private void setupSearchView() {
SearchView searchView = findViewById(R.id.map_search_view);
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
myFilter.setQuery(newText);
myFilter.filter();
recyclerViewAdapter.update();
mapManager.updateMapClusters();
return true;
}
});
}