St. John is our favorite Virgin Island by a good bit. Cruz Bay is a great village with more than a dozen walkable restaurants. We're not fan of the anchorage near Cruz Bay, so we head up the north shore to Maho/Francis or Leinster Bay to overnight. The north shore beaches are amazing. The south shore bays are usually very sheltered. Kiddel/Grootpan Bay has day use dive/snorkel balls that are great.
The National Park publishes their mooring and anchoring guide with specifics on who can anchor and where they can anchor within the National Park boundaries:
http://www.nps.gov/viis/planyourvisit/brochures.htmCheers, RickG