private void refreshMapData(final boolean filterChanged) {
        viewModel.caches.write(false, caches -> MapUtils.filter(caches, viewModel.mapType.filterContext));
        viewModel.waypoints.notifyDataChanged();
        if (filterChanged) {
            viewModel.liveMapHandler.setFilter(viewModel.mapType.filterContext.get());
            MapUtils.updateFilterBar(this, viewModel.mapType.filterContext);
        }
    }
to be called by map fragments' observers for zoom level change
main/src/main/java/cgeo/geocaching/unifiedmap/UnifiedMapActivity.java