The suspect, Randolph Weiss, has also been charged with an enhancement for the use of a deadly weapon, Contra Costa Deputy District Attorney John Cope said.
Crossley's body was found Sunday in the area of Point Pinole Regional Park and Breuner Marsh, East Bay Regional Park District police said.
An autopsy showed that Crossley, 41, died from blunt force trauma and appeared to have been beaten to death, Sgt. Tyrone Davis said.
Crossley was last seen alive at about 10 p.m. Saturday and appeared to have been killed where he was found, Davis said.
On Monday afternoon, police arrested Weiss, a Richmond-area transient, in connection with Crossley's murder.
Davis said Weiss and Crossley had gotten into some kind of altercation that allegedly led to the killing, but it wasn't immediately clear what they were fighting about.
Weiss was scheduled to be arraigned this afternoon in Contra Costa County Superior Court in Richmond. He is being held on $1 million bail.