源代码下载地址:http://www.zuidaima.com/share/1694743146056704.htm
功能:计算两个点(经纬度坐标)之间的距离
使用示例:
double distance = LatLng.distance(113.926496000000000, 22.538393000000000, 114.23, 22.23);
01 | package com.haohui.util; |
02 |
03 | /** |
04 | * 计算两个经纬度之间的距离的工具类 |
05 | * |
06 | * Feb 13, 2014 |
07 | * @author ZhihaoChen |
08 | */ |
09 | public class LatLng { |
10 | private static double lngPerMeter = 1 .E-005D; |
11 |
12 | public double getLat( double _curLat, int _radius) { |
13 | return _radius * lngPerMeter; |
14 | } |
15 |
16 | public double getLng( int _radius) { |
17 | return _radius * lngPerMeter; |
18 | } |
19 |
20 | /** |
21 | * 计算两个经纬度之间的距离 |
22 | * |
23 | * @param _lng1 |
24 | * @param _lat1 |
25 | * @param _lng2 |
26 | * @param _lat2 |
27 | * @return |
28 | */ |
29 | public static double distance( double _lng1, double _lat1, double _lng2, |
30 | double _lat2) { |
31 | if ((_lng1 == 0 .0D) || (_lat1 == 0 .0D) || (_lng2 == 0 .0D) |
32 | || (_lat2 == 0 .0D)) { |
33 | return 0 .0D; |
34 | } |
35 | double rad_lat1 = Rad(_lat1); |
36 | double rad_lat2 = Rad(_lat2); |
37 | double a = rad_lat1 - rad_lat2; |
38 | double b = Rad(_lng1) - Rad(_lng2); |
39 | double s = 2 .0D * Math.asin(Math.sqrt(Math |
40 | .pow(Math.sin(a / 2 .0D), 2 .0D) |
41 | + Math.cos(rad_lat1) |
42 | * Math.cos(rad_lat2) |
43 | * Math.pow(Math.sin(b / 2 .0D), 2 .0D))); |
44 | s *= 6378137 .0D; |
45 | s = Math.round(s * 10000 .0D) / 10000L; |
46 | return s; |
47 | } |
48 |
49 | private static double Rad( double _d) { |
50 | return _d * 3 .141592653589793D / 180 .0D; |
51 | } |
52 | |
53 | } |