getLetterRef method
Returns the letter pair reference of a given easting and northing For example, a reference with an easting of 651409 and a northing of 313177 equates to a letter pair reference of TG 51409 13177 The default amount of digits is 10
Implementation
String getLetterRef(int e, int n, [int digits = 10]) {
if (![0, 2, 4, 6, 8, 10, 12, 14, 16].contains(digits)) {
throw new RangeError("Invalid precision $digits!");
}
final e100km = (e / 100000).floor();
final n100km = (n / 100000).floor();
var l1 = (19 - n100km) - (19 - n100km) % 5 + ((e100km + 10) / 5).floor();
var l2 = (19 - n100km) * 5 % 25 + e100km % 5;
if (l1 > 7)
l1++;
if (l2 > 7)
l2++;
final letterPair = String.fromCharCode(l1 + 'A'.codeUnitAt(0)) + String.fromCharCode(l2 + 'A'.codeUnitAt(0));
e = ((e % 100000) / math.pow(10, 5 - digits / 2)).floor();
n = ((n % 100000) / math.pow(10, 5 - digits / 2)).floor();
var eastingString = e.toString().padLeft(digits~/2, '0');
var northingString = n.toString().padLeft(digits~/2, '0');
return "$letterPair $eastingString $northingString";
}