Unity教程合集Unity技术分享unity3D技术分享

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

2017-08-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();
}

计算距离

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

上一篇下一篇

猜你喜欢

热点阅读