首先,设两点分别为P1、P2,如果其值是用度分秒形式表示,则需将其转换成十进制度的形式,如P1点纬度为23度30分,则其纬度值转换成十进制度的形式为23.5度。
然后,分别将两点的经度、纬度值转换成弧度制形式,如P1纬度为23.5度,转换成弧度制则为:23.5*PI / 180。分别用 P1latInRad、P1LongInRad、P2latInRad、P2LongInRad表示。
然后再分别求取两点间的纬度差(dlat)与经度差(dlon);
接下来求取两点间的正弦与余弦值,公式如下:A=sin2(dlat/2) + cos(P1LatInRad)*cos(P2LatInRad)*Sin2(dlon/2)
接着求取两点的正切值,公式如下:C=2*Math.Atan2(Math.Sqrt(A), Math.Sqrt(1-A))
最后返回两点间的距离:公式如下:D=EarthRadiusKm * C