diff --git a/vtm-app/src/org/oscim/app/location/Compass.java b/vtm-app/src/org/oscim/app/location/Compass.java index 4d5dcdd1..5b33451b 100644 --- a/vtm-app/src/org/oscim/app/location/Compass.java +++ b/vtm-app/src/org/oscim/app/location/Compass.java @@ -1,7 +1,7 @@ /* * Copyright 2013 Ahmad Saleem * Copyright 2013 Hannes Janetzek - * Copyright 2016 devemux86 + * Copyright 2016-2017 devemux86 * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software @@ -85,6 +85,11 @@ public class Compass extends Layer implements SensorEventListener, Map.UpdateLis setEnabled(false); } + @Override + public boolean hasRotation() { + return true; + } + @Override public synchronized float getRotation() { return mCurRotation; diff --git a/vtm/src/org/oscim/renderer/LocationRenderer.java b/vtm/src/org/oscim/renderer/LocationRenderer.java index 017e2065..05bf1695 100644 --- a/vtm/src/org/oscim/renderer/LocationRenderer.java +++ b/vtm/src/org/oscim/renderer/LocationRenderer.java @@ -226,15 +226,12 @@ public class LocationRenderer extends LayerRenderer { gl.uniform1f(hPhase, 1); } - if (viewShed && mLocationIsVisible && mCallback != null) { + if (viewShed && mLocationIsVisible && mCallback != null && mCallback.hasRotation()) { float rotation = mCallback.getRotation(); - if (rotation != 0) { - rotation -= 90; - gl.uniform2f(hDirection, - (float) Math.cos(Math.toRadians(rotation)), - (float) Math.sin(Math.toRadians(rotation))); - } else - gl.uniform2f(hDirection, 0, 0); + rotation -= 90; + gl.uniform2f(hDirection, + (float) Math.cos(Math.toRadians(rotation)), + (float) Math.sin(Math.toRadians(rotation))); } else gl.uniform2f(hDirection, 0, 0); @@ -257,6 +254,11 @@ public class LocationRenderer extends LayerRenderer { } public interface Callback { + /** + * Usually true, can be used with e.g. Android Location.hasBearing(). + */ + boolean hasRotation(); + float getRotation(); } }