Indeed, with this key, visibility does not work properly.
I quote the manual:
/tikz/switch ocg with mark on={<ocg reference»}{<OCGs list> }
These styles transform the current path or the current node in a link acting as if it is produced by the macro\switchocg
(the visibility status of referenced OCGs in the list is reversed).A mark (currently a simple cross) is drawn over the current path or node in an OCG whose reference is ocg reference . The visibility status of this OCG will be reversed as those of the entire list.
Thus, the following two examples should work in the same way. However, only the second one with the switchocg
key with the status=invisible
leaves the rectangle invisible from the beginning.
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage[tikz]{ocgx2}
\usetikzlibrary{positioning}
\tikzset{%
button on/.style={%
draw,minimum size=5mm,
line width=1pt,
fill=blue!50,rounded corners,
switch ocg with mark on={#1}{},
},
}
\begin{document}
\begin{tikzpicture}
\begin{scope}[ocg={name=rect1,ref=rect1,status=invisible}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[button on=rect1]at (-1.5,.5)(but){};
\node[right=0 of but]{rect1};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[ocg={name=rect2,ref=rect2,status=invisible}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[draw,rounded corners,switch ocg=rect2] at (-1,.5) {rectangle};
\end{tikzpicture}
\end{document}