From Google Map on the basis of latitude and longitude for the Earth's surface to achieve the distance between two points, slightly adapted for the domestic space distance calculation, the implementation has been sufficient to meters as a unit. net2.0,c# implementation.
public static double distanceoftwopoints (double lng1,double lat1, double lng2, double lat2, gausssphere GS)
{
Double RADLAT1 = Rad (LAT1);
Double radLat2 = Rad (LAT2);
Double A = RADLAT1-RADLAT2;
Double b = rad (lng1)-Rad (LNG2);
Double s = 2 * Math.asin (MATH.SQRT (Math.pow (Math.sin (A/2), 2) +
Math.Cos (RADLAT1) * MATH.COS (RADLAT2) * MATH.POW (Math.sin (B/2), 2));
s = S * (GS = = gausssphere.wgs84 6378137.0: (GS = = Gausssphere.xian80? 6,378,140:6,378,245));
s = Math.Round (S * 10000)/10000;
return s;
}
private static Double Rad (double D)
{
return d * math.pi/180.0;
}
Gausssphere for custom enumeration types
<summary>
The reference ellipsoid selected in the Gaussian projection
</summary>
public enum Gausssphere
{
BEIJING54,
Xian80,
WGS84,
}