You need to track the positions of all the markers to determine the proper bounds:
- Initialize 4 integers: the top and right bounds with Integer.MIN_VALUE, the bottom and left bounds with Integer.MAX_VALUE.
- Iterate over the position of all your markers and update the bounds appropriately: left should be the smallest latitude, right the largest latitude, bottom the smallest longitude, top the largest latitude (all these using the latitude E6 value).
- Pass zoomToSpan the difference between right and left and the difference between top and bottom, and you should be good.
You may need to do some extra work to manage centering the map properly so everything is in view, but that should about do it.