perpendicularDistance static method

double perpendicularDistance(
  1. LatLng point,
  2. LatLng lineStart,
  3. LatLng lineEnd
)

Implementation

static double perpendicularDistance(LatLng point, LatLng lineStart, LatLng lineEnd) {
  double lat1 = lineStart.latitude;
  double lon1 = lineStart.longitude;
  double lat2 = lineEnd.latitude;
  double lon2 = lineEnd.longitude;
  double lat3 = point.latitude;
  double lon3 = point.longitude;

  double px = lon2 - lon1;
  double py = lat2 - lat1;
  double norm = px * px + py * py;

  double u = ((lon3 - lon1) * px + (lat3 - lat1) * py) / norm;

  double x = lon1 + u * px;
  double y = lat1 + u * py;

  double dx = x - lon3;
  double dy = y - lat3;

  return sqrt(dx * dx + dy * dy);
}