| package com.matrix.system.common.tools; | 
|   | 
| public class LocationUtil { | 
|   | 
|     private static final double EARTH_RADIUS = 6378.137; | 
|   | 
|     private static double rad(double d){ | 
|         return d * Math.PI / 180.0; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 根据两个位置的经纬度,来计算两地的距离(单位为M) | 
|      * 参数为double类型 | 
|      *  locX 当前位置经度 | 
|      *  locY  当前位置纬度 | 
|      *  shopX 店铺位置经度 | 
|      *  shopY  店铺位置纬度 | 
|      */ | 
|     public static double getDistance(double locX, double locY, double shopX, double shopY) { | 
|         double a, b, d, sa2, sb2; | 
|         locY = rad(locY); | 
|         shopY = rad(shopY); | 
|         a = locY - shopY; | 
|         b = rad(locX - shopX); | 
|   | 
|         sa2 = Math.sin(a / 2.0); | 
|         sb2 = Math.sin(b / 2.0); | 
|         d = 2   * EARTH_RADIUS | 
|                 * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(locY) | 
|                 * Math.cos(shopY) * sb2 * sb2)); | 
|         return d; | 
|     } | 
|   | 
|     public static void main(String[] args) { | 
|         // 112.886891,28.222562,114.061937,22.626003  -- 634093.3209722887 | 
|         // 113.930692,22.939454 -- 597367.3546527711 | 
|         System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); | 
|     } | 
| } |