代码之家  ›  专栏  ›  技术社区  ›  zyonneo

如何使用unity从设备上获得相对于地面的准确高度?

  •  0
  • zyonneo  · 技术社区  · 7 年前

    嗨,我正在为IOS应用程序开发一个室内应用程序。我正在尝试获取纬度、经度和高度。当我测试设备时,开始的高度值会出现

    3.67853-一楼(起点)

    3.665541-二楼

    3.538336-一楼

    从上面的数值很难知道用户在哪一层。有没有办法得到正确的高度。

    void Start ()
    {
        StartCoroutine(Getdata());
    }
    
    
    IEnumerator Getdata()
    {
        // First, check if user has location service enabled
        if (!Input.location.isEnabledByUser)
            yield break;
    
        // Start service before querying location
        Input.location.Start();
    
        // Wait until service initializes
        int maxWait = 20;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
            yield return new WaitForSeconds(1);
            maxWait--;
        }
    
        // Service didn't initialize in 20 seconds
        if (maxWait < 1)
        {
            print("Timed out");
            yield break;
        }
    
        // Connection has failed
        if (Input.location.status == LocationServiceStatus.Failed)
        {
            print("Unable to determine device location");
            yield break;
        }
        else
        {
            // Access granted and location value could be retrieved
            Locationinformation.text = "Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp;
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        }
    
        // Stop service if there is no need to query location updates continuously
        Input.location.Stop();
    }
    
    0 回复  |  直到 7 年前
    推荐文章