Повторное заполнение маркеров Google Map после изменения текста - PullRequest
0 голосов
/ 01 мая 2020

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