Search code examples
androidgeolocationlocation

Location.distanceTo uses the error parameter in approximate distance calculation?


I am wondering if the Location.distanceTo method will use the accuracy field of the Location object when approximates the location, or do I have to add by my own the errors to these fields. The usage is to compare the distance against a proximity value.

Float dist=currentLocation.distanceTo(loc2);

Would this be

if (dist<100meters)

or

if (dist+currentLocation.getAccuracy()+loc2.getAccuracy()<100meters)

Solution

  • It looks like it ignores accuracy:
    https://android.googlesource.com/platform/frameworks/base/+/donut-release/location/java/android/location/Location.java#400

     400     /**
     401      * Returns the approximate distance in meters between this
     402      * location and the given location.  Distance is defined using
     403      * the WGS84 ellipsoid.
     404      *
     405      * @param dest the destination location
     406      * @return the approximate distance in meters
     407      */
     408     public float distanceTo(Location dest) {
     409         // See if we already have the result
     410         synchronized (mResults) {
     411             if (mLatitude != mLat1 || mLongitude != mLon1 ||
     412                 dest.mLatitude != mLat2 || dest.mLongitude != mLon2) {
     413                 computeDistanceAndBearing(mLatitude, mLongitude,
     414                     dest.mLatitude, dest.mLongitude, mResults);
     415                 mLat1 = mLatitude;
     416                 mLon1 = mLongitude;
     417                 mLat2 = dest.mLatitude;
     418                 mLon2 = dest.mLongitude;
     419                 mDistance = mResults[0];
     420                 mInitialBearing = mResults[1];
     421             }
     422             return mDistance;
     423         }
     424     }