Как загрузить маркеры мгновенно Android - PullRequest
0 голосов
/ 20 сентября 2018

Я использую googleMap и пытаюсь обновить маркеры из базы данных firebase, а это значит, что я удаляю все предыдущие маркеры и добавляю новые с помощью этого метода

@Override
            public void onKeyEntered(String key, GeoLocation location) {

                try{
                    MyItem myItem = new MyItem(location.latitude, location.longitude);
                    if (!items.contains(myItem)) {
                        items.add(myItem);
                    }
                    Log.d("onKey","called");
                }catch (ClassCastException e){
                    Log.d("classCastException","");
                }

            }

parseJsonToListметод:

private void parseJsonToList() {


    itemss = clusterManagerAlgorithm.getItems();
    try {


        items.removeAll(itemss);
    }catch (IndexOutOfBoundsException e){
        Log.d("itemsDoesn't exist"," : ");
    }


    mClusterManager.clearItems();
    mClusterManager.cluster();
    mClusterManager.addItems(items);
    Log.d("items"," : " + items);


}

Итак, моя проблема в том, что каждый раз, когда я пытаюсь почистить и загрузить данные, происходит то, что все маркеры исчезают примерно на 3 секунды для повторной загрузки.Как я могу удалить и перезагрузить данные без маркеров исчезают.

это класс myItem:

public class MyItem implements ClusterItem {
    private final LatLng mPosition;

    public MyItem(double lat, double lng) {
        mPosition = new LatLng(lat, lng);
    }

    @Override
    public LatLng getPosition() {
        return mPosition;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MyItem item = (MyItem) o;
        return Objects.equals(mPosition, item.mPosition);
    }

    @Override
    public int hashCode() {

        return Objects.hash(mPosition);
    }
}
...