some res fixes
better to use a rounded zoom value for better graphics
more return values to controller methods to know if a change is actually going to happen
still invalidate if we are already at the correct position, otherwise bearing would not get updated