getEastingNorthing method

dynamic getEastingNorthing(
  1. String gridRef
)

Returns the easting and northing of a given letter pair reference For example, a letter pair reference of TG 51409 13177 will return an easting of 651409 and a northing of 313177

Implementation

dynamic getEastingNorthing(String gridRef) {
  var letE = gridRef.toUpperCase().codeUnitAt(0) - 'A'.codeUnitAt(0);
  var letN = gridRef.toUpperCase().codeUnitAt(1) - 'A'.codeUnitAt(0);

  if (letE > 7)
    letE--;
  if (letN > 7)
    letN--;

  var e = ((letE+3)%5)*5 + (letN%5);
  var n = (19-(letE/5).floor()*5) - (letN/5).floor();

  gridRef = gridRef.substring(2).replaceAll(' ', '');

  String eastingString = "$e${gridRef.substring(0, gridRef.length~/2)}";
  String northingString = "$n${gridRef.substring(gridRef.length~/2)}";

  switch (gridRef.length) {
    case 6: eastingString += '00'; northingString += '00'; break;
    case 8: eastingString += '0'; northingString += '0'; break;
  }

  return [int.parse(eastingString), int.parse(northingString)];
}