The GMSCoordinateBounds includingCoordinate:
method returns a new bounds containing the combination of the original bounds and the new location, it doesn't modify the object you call it on.
So you would need something like this:
bounds = [bounds includingCoordinate: marker3.position];