项目需求:通过服务器发送的现实中地球某地的经纬度信息在unity地球模型上生成对应的模型及模型的精确位置。
实现原理就是将谷歌地球经纬度展开为平面坐标,然后将平面坐标转换为三维坐标。
上代码:
/// <summary>
/// 经纬度转球面坐标
/// </summary>
/// <param name="log">经度值</param>
/// <param name="lat">纬度值</param>
/// <returns></returns>
public Vector3 Conversion(float log,float lat)
{
float longitude = log / 180 * Mathf.Acos(-1); //经度
float latitude = lat / 180 * Mathf.Acos(-1); //纬度
//球面Vector值
float x = 2000 * Mathf.Cos(longitude) * Mathf.Cos(latitude);
float y = 2000 * Mathf.Cos(longitude) * Mathf.Sin(latitude);
float z = 2000 * Mathf.Sin(longitude);
Vector3 pos = new Vector3(x, z, y);
return pos;
}
实现效果:
下图中分别是中国台湾省的新竹机场、桃园机场以及马公机场的位置,是通过经纬度转换为球面坐标计算而来。