    var degreesPerRadian = 180.0 / Math.PI;
    var radiansPerDegree = Math.PI / 180.0;
      // Returns the bearing in degrees between two points.
      // North = 0, East = 90, South = 180, West = 270.
    function bearing( from, to ) 
    {
        // See T. Vincenty, Survey Review, 23, No 176, p 88-93,1975.
        // Convert to radians.
        var lat1 = from.latRadians();
        var lon1 = from.lngRadians();
        var lat2 = to.latRadians();
        var lon2 = to.lngRadians();
        // Compute the angle.
        var angle = - Math.atan2( Math.sin( lon1 - lon2 ) * Math.cos( lat2 ), Math.cos( lat1 ) * Math.sin( lat2 ) - Math.sin( lat1 ) * Math.cos( lat2 ) * Math.cos( lon1 - lon2 ) );
        if ( angle < 0.0 ) angle  += Math.PI * 2.0;
        // And convert result to degrees.
        angle = angle * degreesPerRadian;
        angle = angle.toFixed(1);
        return angle;
      }

    function computeAngle(endLatLng, startLatLng) 
    {
      var DEGREE_PER_RADIAN = 57.2957795;
      var RADIAN_PER_DEGREE = 0.017453;

      var dlat = endLatLng.lat() - startLatLng.lat();
      var dlng = endLatLng.lng() - startLatLng.lng();
      // We multiply dlng with cos(endLat), since the two points are very closeby,
      // so we assume their cos values are approximately equal.
      var yaw = Math.atan2(dlng * Math.cos(endLatLng.lat() * RADIAN_PER_DEGREE), dlat)
             * DEGREE_PER_RADIAN;
      return wrapAngle(yaw);
    }

    function wrapAngle(angle) 
    {
        if (angle >= 360) {
          angle -= 360;
        } else if (angle < 0) {
         angle += 360;
        }
        return angle;
    } 


