- if (toBeX < targetX) {
- while ((toBeX * 0.5) < targetX) {
- toBeX = toBeX * 2;
- AffineTransform tr = new AffineTransform();
- tr.scale(toBeX, toBeX);
- int zoomLevel = MapScalingTransform.zoomLevel(tr);
- if (zoomLevel >= 20) { // let's not zoom too close
- break;
- }
- }
- } else {
- while ((toBeX * 0.25) > targetX) {
- toBeX = toBeX * 0.5;
- AffineTransform tr = new AffineTransform();
- tr.scale(toBeX, toBeX);
- if (MapScalingTransform.zoomLevel(tr) <= 0) { // let's not zoom too far away
- break;
- }
- }
- }
+ toBeX = Math.pow(2.0, tarZoomLevel);
+ } else if (tarZoomLevel > 20) {
+ toBeX = Math.pow(2.0, 20);
+ } else if (tarZoomLevel < 0) {
+ toBeX = 2;
+ } else {
+ toBeX = targetX;