diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java index e22d02b086..f1b92fd075 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java @@ -129,14 +129,17 @@ public class MapInfoLayer extends OsmandMapLayer { registerSideWidget(dist, R.drawable.ic_action_target, R.string.map_widget_distance, "distance", false, 5); TextInfoWidget time = ric.createTimeControl(map); registerSideWidget(time, new TimeControlWidgetState(app), "time", false, 10); - TextInfoWidget bearing = ric.createBearingControl(map); - registerSideWidget(bearing, new BearingWidgetState(app), "bearing", false, 11); if (settings.USE_MAP_MARKERS.get()) { TextInfoWidget marker = mwf.createMapMarkerControl(map, true); registerSideWidget(marker, R.drawable.ic_action_flag_dark, R.string.map_marker_1st, "map_marker_1st", false, 12); + TextInfoWidget bearing = ric.createBearingControl(map); + registerSideWidget(bearing, new BearingWidgetState(app), "bearing", false, 13); TextInfoWidget marker2nd = mwf.createMapMarkerControl(map, false); - registerSideWidget(marker2nd, R.drawable.ic_action_flag_dark, R.string.map_marker_2nd, "map_marker_2nd", false, 13); + registerSideWidget(marker2nd, R.drawable.ic_action_flag_dark, R.string.map_marker_2nd, "map_marker_2nd", false, 14); + } else { + TextInfoWidget bearing = ric.createBearingControl(map); + registerSideWidget(bearing, new BearingWidgetState(app), "bearing", false, 13); } TextInfoWidget speed = ric.createSpeedControl(map); diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 6f2552221e..3940168bdb 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -622,13 +622,13 @@ public class RouteInfoWidgetsFactory { @Override public boolean updateInfo(DrawSettings drawSettings) { boolean relative = showRelativeBearing.get(); - setIcons(relative ? relativeBearingResId : bearingResId, relative ? relativeBearingNightResId : bearingNightResId); + boolean modeChanged = setIcons(relative ? relativeBearingResId : bearingResId, relative ? relativeBearingNightResId : bearingNightResId); setContentTitle(relative ? R.string.map_widget_bearing : R.string.map_widget_magnetic_bearing); int b = getBearing(relative); - if (distChanged(cachedDegrees, b)) { + if (degreesChanged(cachedDegrees, b) || modeChanged) { cachedDegrees = b; if (b != -1000) { - setText(String.valueOf(b) + "°", null); + setText(String.valueOf(b) + "°" + (relative ? "" : " M"), null); } else { setText(null, null); } @@ -688,9 +688,7 @@ public class RouteInfoWidgetsFactory { @Override public void onClick(View v) { showRelativeBearing.set(!showRelativeBearing.get()); - bearingControl.setIcons(!showRelativeBearing.get() ? bearingResId : relativeBearingResId, - !showRelativeBearing.get() ? bearingNightResId : relativeBearingNightResId); - map.getMapView().refreshMap(); + map.refreshMap(); } }); @@ -1198,12 +1196,16 @@ public class RouteInfoWidgetsFactory { public static boolean distChanged(int oldDist, int dist){ - if(oldDist != 0 && Math.abs(oldDist - dist) < 10){ + if (oldDist != 0 && Math.abs(oldDist - dist) < 10) { return false; } return true; } + public static boolean degreesChanged(int oldDegrees, int degrees){ + return Math.abs(oldDegrees - degrees) >= 1; + } + public AlarmWidget createAlarmInfoControl(OsmandApplication app, MapActivity map) { return new AlarmWidget(app, map); }