2014-01-22 2 views
0

거리 정보를 킬로미터 (km)로 표시하려고합니다. 나는이 링크 Find distance between two points on map using Google Map API V2의 코드를 구현 - Abhijit Kurane에게 안드로이드에서지도 거리 텍스트를 표시하는 방법 GMap v2

public double CalculiationByDistance(LatLng StartP, LatLng EndP) { 
    int Radius = 6371; 
    double lat1 = StartP.latitude; 
    double lat2 = EndP.latitude; 
    double lon1 = StartP.longitude; 
    double lon2 = EndP.longitude; 
    double dLat = Math.toRadians(lat2 - lat1); 
    double dLon = Math.toRadians(lon2 - lon1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) 
      + Math.cos(Math.toRadians(lat1)) 
      * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon/2) 
      * Math.sin(dLon/2); 
    double c = 2 * Math.asin(Math.sqrt(a)); 
    double valueResult = Radius * c; 
    double km = valueResult/1; 
    DecimalFormat newFormat = new DecimalFormat("####"); 
    int kmInDec = Integer.valueOf(newFormat.format(km)); 
    double meter = valueResult % 1000; 
    int meterInDec = Integer.valueOf(newFormat.format(meter)); 
    Log.i("Radius Value", "" + valueResult + " KM " + kmInDec 
      + " Meter " + meterInDec); 

    return Radius * c; 
} 

을하지만 난 단지 잘못된 거리를 가지고는 로그 캣은 0.2 km 거리를 제공합니다. 어떻게해야합니까? 사전에

감사합니다 ..

답변

0
public static double distFrom(double lat1, double lng1, double lat2, 
      double lng2) { 
     double earthRadius = 3958.75; 
     double dLat = Math.toRadians(lat2 - lat1); 
     double dLng = Math.toRadians(lng2 - lng1); 
     double sindLat = Math.sin(dLat/2); 
     double sindLng = Math.sin(dLng/2); 
     double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2) 
       * Math.cos(Math.toRadians(lat1)) 
       * Math.cos(Math.toRadians(lat2)); 
     double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
     double dist = earthRadius * c; 

     return dist; 
    } 


use as in KM like ::--> 

distance = distFrom(latitude, longitude, lat_array.get(i), 
          long_array.get(i)); 
double km = distance/0.62137; 
관련 문제