首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于iOS的全球定位系统定位

基于iOS的全球定位系统定位
EN

Stack Overflow用户
提问于 2017-04-29 22:33:02
回答 1查看 2.2K关注 0票数 0

因此,我在Unity3d 5.4.4f1中开发了一个应用程序,类似于最初针对安卓的Pokemon Go,然后我最近将其构建为iOS 10.3,发现Input.location根本无法工作。以下是代码:

代码语言:javascript
复制
public class Locate : MonoBehaviour {

    public float latitude;
    public float longitude;

    IEnumerator coroutine;

    IEnumerator Start() {
        coroutine = updateGPS();

        if (!Input.location.isEnabledByUser)
            yield break;

        Input.location.Start();

        int maxWait = 4;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) {
            yield return new WaitForSeconds(1);
            maxWait--;
        }

       if (maxWait < 1) {
            print("Timed out");
            yield break;
        }


        if (Input.location.status == LocationServiceStatus.Failed) {
            print("Unable to determine device location");
            yield break;
        } else {
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
            longitude = Input.location.lastData.longitude;
            latitude = Input.location.lastData.latitude;

            StartCoroutine(coroutine);
        }
    }

    IEnumerator updateGPS() {
        float UPDATE_TIME = 1f;
        WaitForSeconds updateTime = new WaitForSeconds(UPDATE_TIME);

        while (true) {
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);

            longitude = Input.location.lastData.longitude;
            latitude = Input.location.lastData.latitude;

            yield return updateTime;
        }
    }

    void stopGPS() {
        Input.location.Stop();
        StopCoroutine(coroutine);
    }

    void OnDisable() {
        stopGPS();
    }
}

当我研究这个问题的时候,有些人说状态总是处于“初始化”状态,从来没有改变过。我认为正在发生的另一件事是,iOS不允许应用程序使用位置,但我进入了限制,并将其设置为“始终”,仍然什么也不允许。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-30 14:45:21

从iOS 10开始,需要将NSLocationWhenInUseUsageDescription添加到info.plist文件中。这与将Android中的传感器权限添加到Manifest文件几乎是一样的。

NSLocationWhenInUseUsageDescription =“您使用此传感器的原因”;

当您这样做时,您将被允许访问GPS传感器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43701104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档