From f6dbeba3d8f37fd089504e0bb99fd574e5c868b9 Mon Sep 17 00:00:00 2001
From: Izumi Kawashima <schedul.xor@gmail.com>
Date: Tue, 22 Nov 2016 01:32:43 +0900
Subject: [PATCH] Check and clamp bearing range each time it's set (#248)

---
 vtm/src/org/oscim/core/MapPosition.java | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/vtm/src/org/oscim/core/MapPosition.java b/vtm/src/org/oscim/core/MapPosition.java
index d595fd6d..c98e17bd 100644
--- a/vtm/src/org/oscim/core/MapPosition.java
+++ b/vtm/src/org/oscim/core/MapPosition.java
@@ -90,7 +90,7 @@ public class MapPosition {
     }
 
     public MapPosition setBearing(float bearing) {
-        this.bearing = bearing;
+        this.bearing = clampBearing(bearing);
         return this;
     }
 
@@ -149,14 +149,17 @@ public class MapPosition {
         this.y = y;
         this.scale = scale;
 
+        this.bearing = clampBearing(bearing);
+        this.tilt = tilt;
+        this.zoomLevel = FastMath.log2((int) scale);
+    }
+
+    private static float clampBearing(float bearing) {
         while (bearing > 180)
             bearing -= 360;
         while (bearing < -180)
             bearing += 360;
-        this.bearing = bearing;
-
-        this.tilt = tilt;
-        this.zoomLevel = FastMath.log2((int) scale);
+        return bearing;
     }
 
     /**