lat为纬度23.,lng为经度:113.
private const float EARTH_RADIUS = 6378.137f;//地球半径
public static float Distance(float lat1, float lng1, float lat2, float lng2){
// Debug.Log ("----------" + lat1 + " " + lng1 + " " + lat2 + " " + lng2);
float radLat1 = rad(lat1);
float radLat2 = rad(lat2);
float a = radLat1 - radLat2;
float b = rad(lng1) - rad(lng2);
float s = 2 * Mathf.Asin(Mathf.Sqrt(Mathf.Pow(Mathf.Sin(a / 2), 2) +
Mathf.Cos(radLat1) * Mathf.Cos(radLat2) * Mathf.Pow(Mathf.Sin(b / 2), 2)));
s = s * EARTH_RADIUS;
//单位为米
s = Mathf.Round(s * 10000) / 10;
//单位为千米
// s = Mathf.Round(s * 10000) / 10000;
return s;
}
public static float Distance(string _lat1, string _lng1, string _lat2, string _lng2)
{
float lat1 = float.Parse(_lat1);
float lng1 = float.Parse(_lng1);
float lat2 = float.Parse(_lat2);
float lng2 = float.Parse(_lng2);
// Debug.Log ("----------" + lat1 + " " + lng1 + " " + lat2 + " " + lng2);
float radLat1 = rad(lat1);
float radLat2 = rad(lat2);
float a = radLat1 - radLat2;
float b = rad(lng1) - rad(lng2);
float s = 2 * Mathf.Asin(Mathf.Sqrt(Mathf.Pow(Mathf.Sin(a / 2), 2) +
Mathf.Cos(radLat1) * Mathf.Cos(radLat2) * Mathf.Pow(Mathf.Sin(b / 2), 2)));
Debug.Log("lat1=" + lat1 + " lng1=" + lng1 + " a=" + a + " b=" + b + " s=" + s);
s = s * EARTH_RADIUS;
//单位为米
s = Mathf.Round(s * 10000) / 10;
//单位为千米
//s = Mathf.Round(s * 10000) / 10000;
return s;
}
private static float rad(float d)
{
return d * Mathf.PI / 180.0f;
}