diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 57fd32e5..d9792706 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2581,6 +2581,18 @@ "osdElement_RADAR": { "message": "Radar" }, + "osdElement_MAP_SCALE": { + "message": "Map Scale" + }, + "osdElement_MAP_SCALE_HELP": { + "message": "Scale of the currently shown map/radar." + }, + "osdElement_MAP_REFERENCE": { + "message": "Map Reference" + }, + "osdElement_MAP_REFERENCE_HELP": { + "message": "Reference (direction that points up) of the current map. N for North and T for takeoff direction." + }, "osdElement_WIND_SPEED_HORIZONTAL": { "message": "Horizontal Wind Speed" }, diff --git a/tabs/osd.js b/tabs/osd.js index 6ffd9496..716703d2 100644 --- a/tabs/osd.js +++ b/tabs/osd.js @@ -1108,6 +1108,26 @@ OSD.constants = { min_version: '2.0.0', positionable: false, }, + { + name: 'MAP_SCALE', + id: 98, + min_version: '2.1.1', + preview: function(osd_data) { + var scale; + if (OSD.data.preferences.units === 0) { + scale = FONT.embed_dot("0.10") + FONT.symbol(SYM.MI); + } else { + scale = "100" + FONT.symbol(SYM.M); + } + return FONT.symbol(SYM.SCALE) + scale; + }, + }, + { + name: 'MAP_REFERENCE', + id: 99, + min_version: '2.1.1', + preview: FONT.symbol(SYM.DIRECTION) + '\nN', + }, ], }, { @@ -1955,21 +1975,24 @@ OSD.GUI.updateFields = function() { OSD.GUI.updateMapPreview = function(mapCenter, name, directionSymbol, centerSymbol) { if ($('input[name="' + name + '"]').prop('checked')) { var mapInitialX = OSD.data.display_size.x - 2; - if (directionSymbol) { - OSD.GUI.checkAndProcessSymbolPosition(mapInitialX, SYM.DIRECTION); - OSD.GUI.checkAndProcessSymbolPosition(mapInitialX + OSD.data.display_size.x, directionSymbol.charCodeAt(0)); - } OSD.GUI.checkAndProcessSymbolPosition(mapCenter, centerSymbol); - var scalePos = 1 + OSD.data.display_size.x * (OSD.data.display_size.y - 2); - OSD.GUI.checkAndProcessSymbolPosition(scalePos, SYM.SCALE); - var scale; - if (OSD.data.preferences.units === 0) { - scale = FONT.embed_dot("0.10") + FONT.symbol(SYM.MI); - } else { - scale = "100" + FONT.symbol(SYM.M); - } - for (var ii = 0; ii < scale.length; ii++) { - OSD.GUI.checkAndProcessSymbolPosition(scalePos + ii + 1, scale.charCodeAt(ii)); + if (semver.lt(CONFIG.flightControllerVersion, '2.1.1')) { + // INAV pre 2.1.1 had hardcoded map reference and scale + if (directionSymbol) { + OSD.GUI.checkAndProcessSymbolPosition(mapInitialX, SYM.DIRECTION); + OSD.GUI.checkAndProcessSymbolPosition(mapInitialX + OSD.data.display_size.x, directionSymbol.charCodeAt(0)); + } + var scalePos = 1 + OSD.data.display_size.x * (OSD.data.display_size.y - 2); + OSD.GUI.checkAndProcessSymbolPosition(scalePos, SYM.SCALE); + var scale; + if (OSD.data.preferences.units === 0) { + scale = FONT.embed_dot("0.10") + FONT.symbol(SYM.MI); + } else { + scale = "100" + FONT.symbol(SYM.M); + } + for (var ii = 0; ii < scale.length; ii++) { + OSD.GUI.checkAndProcessSymbolPosition(scalePos + ii + 1, scale.charCodeAt(ii)); + } } } };