您的位置:首页 > 业界新闻

【LBS】移动互联网基于LBS地理位置应用开发必备

2015-11-16 09:32 736 查看
原文:【LBS】移动互联网基于LBS地理位置应用开发必备

源代码下载地址:http://www.zuidaima.com/share/1694743146056704.htm

功能:计算两个点(经纬度坐标)之间的距离

使用示例:

doubledistance=LatLng.distance(113.926496000000000,22.538393000000000,114.23,22.23);

01
package
com.haohui.util;
02
03
/**
04
*
计算两个经纬度之间的距离的工具类
05
*
06
*
Feb13,2014
07
*
@authorZhihaoChen
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息