midPointBetweenTwoGeoPoints method

Coordinate midPointBetweenTwoGeoPoints(
  1. Coordinate l1,
  2. Coordinate l2
)

calcuate the midpoint bewteen teo geo points

Implementation

Coordinate midPointBetweenTwoGeoPoints(Coordinate l1, Coordinate l2) {
  num l1LatRadians = degToRadian(l1.y);
  num l1LngRadians = degToRadian(l1.x);
  num l2LatRadians = degToRadian(l2.y);
  num lngRadiansDiff = degToRadian(l2.x - l1.x);

  num vectorX = math.cos(l2LatRadians) * math.cos(lngRadiansDiff);
  num vectorY = math.cos(l2LatRadians) * math.sin(lngRadiansDiff);

  num x = math.sqrt((math.cos(l1LatRadians) + vectorX) *
          (math.cos(l1LatRadians) + vectorX) +
      vectorY * vectorY);
  num y = math.sin(l1LatRadians) + math.sin(l2LatRadians);
  num latRadians = math.atan2(y, x);
  num lngRadians =
      l1LngRadians + math.atan2(vectorY, math.cos(l1LatRadians) + vectorX);

  return Coordinate((radianToDeg(lngRadians as double) + 540) % 360 - 180,
      radianToDeg(latRadians as double));
}