2010-06-27 2 views
2

Мне интересно, будет ли метод Location.distanceTo использовать поле точности объекта Location, когда оно приближается к местоположению, или мне нужно добавить собственные ошибки в эти поля. Использование - сравнение расстояния с величиной близости.Location.distanceTo использует параметр ошибки при приблизительном расчете расстояния?

Float dist=currentLocation.distanceTo(loc2); 

будет ли это

if (dist<100meters) 

или

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

ответ

2

Похоже, он игнорирует точность:
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  } 
Смежные вопросы