[转载]Unity 将经纬度变为Unity中的坐标

public static GisPointTo3DPoint Instance = null;

    public Transform BottomRightPoint; //Unity中右下点  (X正方向和Z轴的负方向之间)
    public Transform TopLeftPoint;//Unity中左上点  (Z轴正方向和X轴负方向之间)

    private Vector2 BottomRightSai;//地图中对应的左上经纬度点  
    private Vector2 TopLeftSai;//地图中对应的右下经纬度点  

    private float z_offset, x_offset, z_w_offset, x_w_offset;

    private RaycastHit rayHit;
    
    private void Awake()
    {
        InitBasicNum();//初始化参数  
        if (Instance == null) Instance = this;
        else if (Instance != this) Destroy(this);
    }
     private void InitBasicNum()
    { 
        //右下经纬度
        BottomRightSai = new Vector2(113.98071f, 22.52864f);
        //左上经纬度
        TopLeftSai = new Vector2(93.98071f, 42.52864f);
        z_offset = BottomRightSai.y - TopLeftSai.y;//地图中的维度差  
        x_offset = BottomRightSai.x - TopLeftSai.x;//地图中的经度差  
        z_w_offset = BottomRightPoint.position.z - TopLeftPoint.position.z;//unity中的维度差  
        x_w_offset = BottomRightPoint.position.x - TopLeftPoint.position.x;//unity中的经度差  
    }
    /// <summary>
    /// 由经纬度得到位置点  
    /// </summary>
    /// <param name="se"></param>
    /// <returns></returns>
    public Vector3 GetWorldPoint(Vector2 se)
    {
        float tempX = se.x - TopLeftSai.x;
        float tempZ = se.y - BottomRightSai.y;
        float _tempX = (tempX * x_w_offset / x_offset + TopLeftPoint.position.x);
        float _tempZ = (tempZ * z_w_offset / z_offset + BottomRightPoint.position.z);
        //坐标偏差(在Unity中的坐标)
        return new Vector3(_tempX, 0, _tempZ);
    }
    /// <summary>
    /// 由位置点得到经纬度  
    /// </summary>
    /// <param name="curPoint"></param>
    /// <returns></returns>
    public Vector3 GetLatLon(Vector3 curPoint)
    {
        //坐标偏差
        float _x_offset = (curPoint.x - BottomRightPoint.position.x) * x_offset / x_w_offset;
        float _z_offset = (curPoint.z - TopLeftPoint.position.z) * z_offset / z_w_offset;
        float resultX = _x_offset + BottomRightSai.x;
        float resultZ = _z_offset + TopLeftSai.y;
        return new Vector2(resultX, resultZ);
    }

Unity 将经纬度变为Unity中的坐标_ui界面里的点的位置和经度纬度对应 unity-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值