2つの緯度間の距離を計算する



   1. public class Distance {  
   2.   
   3.     /**  , (km)  */  
   4.     private final static double EARTH_RADIUS = 6378.137;  
   5.   
   6.     /**   */  
   7.     private static double rad(double d) {  
   8.         return d * Math.PI / 180.0;  
   9.     }  
  10.   
  11.     /** 
  12.      *   
  13.      *  
  14.      * @param lat1 
  15.      * @param lng1 
  16.      * @param lat2 
  17.      * @param lng2 
  18.      * @return  (km) 
  19.      */  
  20.     public static double getDistance(double lng1, double lat1, double lng2,double lat2) {  
  21.         double radLng1 = rad(lng1);  
  22.         double radLng2 = rad(lng2);  
  23.         double a = radLng1 - radLng2;  
  24.         double b = rad(lat1) - rad(lat2);  
  25.         double dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)+  
  26.                 Math.cos(radLng1) * Math.cos(radLng2)* Math.pow(Math.sin(b / 2), 2)));  
  27.         dis = dis * EARTH_RADIUS;  
  28.         dis = Math.round(dis * 10000) / 10000.0;// 10000.0   
  29.         return dis;  
  30.     }  
  31.   
  32.     /** 
  33.      * @param args 
  34.      */  
  35.     public static void main(String[] args) {  
  36.         System.out.println(" :"+2*Math.PI*EARTH_RADIUS);  
  37.         System.out.println("90 :"+getDistance(0,0,90,0));  
  38.         System.out.println("180 :"+getDistance(0,0,180,0));  
  39.     }  
  40.   
  41. }