My personal favorite is GaiaGPS. It’s not free, but it allows you to create map “layers” which can be very handy. Basically it lets you choose and overlay road maps, topo maps (from various sources) and others. But the real benefit is being able to download maps for offline use. This is essential because many of the areas in the mountains you won’t have a cell connection, but with the maps already downloaded, you can still navigate.
I use GaiaGPS to track all the hikes here for SoCalHiker.net, and you can also download my GPX files for each of our trail guides and use them with GaiaGPS.
I also use it in conjunction with CalTopo.com when I’m planning a trip to an area I haven’t hiked before. I can “trace” the route I’m planning and export the resulting data to a GPX file for use with GaiaGPS. This was super helpful when I was backpacking the 272-mile Theodore Solomons Trail, for example.