Return the great-circle distance, in meters, from this geographic
        coordinates to the specified other point, i.e., the shortest distance
        over the earth’s surface, ‘as-the-crow-flies’ distance between the
        points, ignoring any natural elevations of the ground.

        Haversine formula::

          R = earth’s radius (mean radius = 6,371km)
          Δlat = lat2 − lat1
          Δlong = long2 − long1
          a = sin²(Δlat / 2) + cos(lat1).cos(lat2).sin²(Δlong/2)
          c = 2.atan2(√a, √(1−a))
          d = R.c

        @param other: a ``GeoPoint`` instance.

        @return: the great-circle distance, in meters, between this geographic
            coordinates to the specified other point.

def great_circle_distance(self, other):
        """
        Return the great-circle distance, in meters, from this geographic
        coordinates to the specified other point, i.e., the shortest distance
        over the earth’s surface, ‘as-the-crow-flies’ distance between the
        points, ignoring any natural elevations of the ground.

        Haversine formula::

          R = earth’s radius (mean radius = 6,371km)
          Δlat = lat2 − lat1
          Δlong = long2 − long1
          a = sin²(Δlat / 2) + cos(lat1).cos(lat2).sin²(Δlong/2)
          c = 2.atan2(√a, √(1−a))
          d = R.c

        @param other: a ``GeoPoint`` instance.

        @return: the great-circle distance, in meters, between this geographic
            coordinates to the specified other point.
        """
        distance_latitude = math.radians(abs(self.latitude - other.latitude))
        distance_longitude = math.radians(abs(self.longitude - other.longitude))
        a = math.sin(distance_latitude / 2) * math.sin(distance_latitude / 2) \
            + math.cos(math.radians(self.latitude)) \
              * math.cos(math.radians(other.latitude)) \
              * math.sin(distance_longitude / 2) \
              * math.sin(distance_longitude / 2)
        c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
        return GeoPoint.EARTH_RADIUS_METERS * c