【unity】获得地理坐标并计算距离

作者: 黒可乐 | 来源:发表于2017-08-09 18:09 被阅读0次

    最近研究了一下定位这个系统,感觉还多有趣的,游戏社交(约*)。查了一下看到了这篇文章,其中讲了一些方法,多不错的。今天给大家介绍一种unity自带的简单的方法。

    用什么?

    LocationService
    这是一个unity提供的地理位置的接口,我用的unity版本是5.4.3,不清楚是哪个版本中就有这个接口。简单说一下这个东东吧。

    三个属性:
    ●isEnabledByUser:检测是否有了GPS开启。
    ●lastData:上一次更新位置信息的数据,初始化都为0。LocationInfo类型。
    ●status:更新进程的状态。状态有Stopped、Initaializing、Running、Failed,这四个状态。

    两个方法:
    ●Start:开始更新位置信息。
    ●Stop:停止更新位置信息。

    LocationInfo
    这是获得地理位置的数据体。属性有:
    ●altitude:海拔
    ●horizontalAccuracy:水平精度
    ●verticalAccuracy:垂直精度
    ●latitude:经度
    ●longitude:纬度
    ●timestamp:时间节点

    怎么用?

    刚才讲的LocationService是封装在Input中的,这里使用了一个协成来获得位置信息。

    private IEnumerator GetLocationInfo()
    {
        //先判断是否打开了定位
        if (!Input.location.isEnabledByUser)
        {
            Debug.Log("没有打开定位");
            yield break;
        }
        //这里开起定位计算
        Input.location.Start();
        //时间为20秒
        var maxWait = 20;
        while (Input.location.status == LocationServiceStatus.Initializing)
        {
            yield return new WaitForSeconds(1);
            maxWait--;
        }
        if (maxWait < 1)
        {
            Debug.Log("时间到");
            yield break;
        }
        if (Input.location.status == LocationServiceStatus.Failed)
        {
            Debug.Log("无法使用定位");
            yield break;
        }
        Debug.Log("经纬度: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " +
                  Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " +
                  Input.location.lastData.timestamp);
        Input.location.Stop();
    }
    

    计算距离

    计算距离这里有一个博客讲的很好就不讲了。哈哈哈。
    这里我也做了一个小小的测试。这是测试代码。这里个人觉得第二种会精确一些,并且代码要少一些,看着舒服些。哈哈哈。

    相关文章

      网友评论

        本文标题:【unity】获得地理坐标并计算距离

        本文链接:https://www.haomeiwen.com/subject/zarqrxtx.html