Android Open Source - hacktoolkit-android_lib Map Utils






From Project

Back to project page hacktoolkit-android_lib.

License

The source code is released under:

MIT License

If you think the Android project hacktoolkit-android_lib listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.hacktoolkit.android.maps;
/*w  ww.  j a va2  s .  c  o m*/
import com.hacktoolkit.android.constants.GeoConstants;

public class MapUtils {
  /**
   * Calculates the Cartesian distance of two points represented as lat-long pairs
   *
   * It's much harder to calculate geographical distances with precision on the geographic coordinate system,
   * because the Earth is spherical and not flat.
   * Assuming a 2D model of the earth would produce inaccurate results over large distances or areas
   * 
   * http://en.wikipedia.org/wiki/Geographical_distance
   * http://en.wikipedia.org/wiki/Euclidean_distance
   * 
   * For some simpler purposes, and within smaller areas, a Cartesian model can be used
   * Good old middle school math and Pythagorean theorem will do:
   *   (a^2 + b^2 = c^2)
   *   or
   *   distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)
   * 
   * Since the sqrt operation is relatively expensive, we'll just keep the squares
   * 
   * @param previousLatitude
   * @param previousLongitude
   * @param newLatitude
   * @param newLongitude
   * @return the sum of the squares, which we will normalize into a score (?)
   */
  public static double geographicalCartesianDistance(
      double previousLatitude,
      double previousLongitude,
      double newLatitude,
      double newLongitude) {
    double deltaX = Math.abs(newLatitude - previousLatitude);
    double deltaY = Math.abs(newLongitude - previousLongitude);
    double sumOfSquares = deltaX * deltaX + deltaY * deltaY;
    return sumOfSquares;
  }
  
  /**
   * 
   * @return
   */
  /**
   * Calculates approximate geographical distance using great circle formula
   * 
   * http://en.wikipedia.org/wiki/Great-circle_distance
   *   The Earth is nearly spherical (see Earth radius) so great-circle distance formulas give the distance between points on
   *   the surface of the Earth (as the crow flies) correct to within 0.5% or so.

   *   Earth radius is the distance from Earth's center to its surface, about 6,371 kilometers (3,959 mi).
   *   This length is also used as a unit of distance, especially in astronomy and geology, where it is usually denoted by R_\oplus.
   * 
   * Let \phi_1,\lambda_1 and \phi_2,\lambda_2 be the geographical latitude and longitude of two points 1 and 2,
   *   and \Delta\phi,\Delta\lambda their absolute differences;
   * then \Delta\sigma, the central angle between them, is given by the spherical law of cosines:
   *   \Delta\sigma=\arccos\bigl(\sin\phi_1\sin\phi_2+\cos\phi_1\cos\phi_2\cos\Delta\lambda\bigr).
   *   The distance d, i.e. the arc length, for a sphere of radius r and \Delta\sigma given in
   *   d = r \, \Delta\sigma.
   * 
   * @param previousLatitude
   * @param previousLongitude
   * @param newLatitude
   * @param newLongitude
   * @return distance in kilometers
   */
  public static double geographicalGreatCircleDistance(
      double previousLatitude,
      double previousLongitude,
      double newLatitude,
      double newLongitude) {
    // absolute difference in latitude
    //double deltaPhi = Math.abs(newLatitude - previousLatitude);
    // absolute difference in longitude
    double deltaLambda = Math.abs(newLongitude - previousLongitude);
    // central angle
    double deltaSigma = Math.acos((Math.sin(previousLatitude) * Math.sin(newLatitude)) +
        (Math.cos(previousLatitude) * Math.cos(newLatitude) * Math.cos(deltaLambda)));
    // arc length
    double distanceKm = deltaSigma * GeoConstants.EARTH_RADIUS_MEAN_KM;
    return distanceKm;
  }
}




Java Source Code List

com.hacktoolkit.android.activities.HTKSplashScreenActivity.java
com.hacktoolkit.android.adapters.HTKContactsAdapter.java
com.hacktoolkit.android.api_helpers.FacebookHelper.java
com.hacktoolkit.android.api_helpers.HTKCallback.java
com.hacktoolkit.android.api_helpers.ParseHelper.java
com.hacktoolkit.android.constants.GeoConstants.java
com.hacktoolkit.android.constants.StringConstants.java
com.hacktoolkit.android.constants.TimeConstants.java
com.hacktoolkit.android.constants.UnitConstants.java
com.hacktoolkit.android.fragments.ContactsFragment.java
com.hacktoolkit.android.maps.MapUtils.java
com.hacktoolkit.android.maps.Mapper.java
com.hacktoolkit.android.models.HTKContact.java
com.hacktoolkit.android.user.HTKUser.java
com.hacktoolkit.android.utils.BitmapUtils.java
com.hacktoolkit.android.utils.ContactsUtils.java
com.hacktoolkit.android.utils.FileUtils.java
com.hacktoolkit.android.utils.HTKUtils.java
com.hacktoolkit.android.utils.SystemUiHiderBase.java
com.hacktoolkit.android.utils.SystemUiHiderHoneycomb.java
com.hacktoolkit.android.utils.SystemUiHider.java