如何立即加载标记Android

时间:2018-09-19 22:35:56

标签: google-maps-markers cluster-computing

我使用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);
    }
}

0 个答案:

没有答案