Skip to main content
New Participant
May 4, 2024

Using Location Services API in Unity

Has anyone successfully used Unity's Location Services API for Quest 3?  

Here's the code that I'm using:

IEnumerator LocationCoroutine()
{
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.FineLocation)) {
UnityEngine.Android.Permission.RequestUserPermission(UnityEngine.Android.Permission.FineLocation);
}

// First, check if user has location service enabled
if (!UnityEngine.Input.location.isEnabledByUser) {
yield break;
}

// Start service before querying location
Input.location.Start(1f, 1f);

MessageText.text = "<< Connecting to Location Services >>";

// Wait until service initializes
int maxWait = 15;
while (UnityEngine.Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
{
yield return new WaitForSecondsRealtime(1);
maxWait--;
}

// Service didn't initialize in 15 seconds
if (maxWait < 1)
{
MessageText.text = "<< Timed out >>";
yield break;
}

// Connection has failed
if (UnityEngine.Input.location.status != LocationServiceStatus.Running)
{
MessageText.text = "<< Unable to determine device location. Failed with status {0}" + UnityEngine.Input.location.status + " >>";
yield break;
}
else
{

Debug.LogFormat("Location: "
+ UnityEngine.Input.location.lastData.latitude + " "
+ UnityEngine.Input.location.lastData.longitude + " "
+ UnityEngine.Input.location.lastData.altitude + " "
+ UnityEngine.Input.location.lastData.horizontalAccuracy + " "
+ UnityEngine.Input.location.lastData.timestamp);
}

// Stop service if there is no need to query location updates continuously
Input.location.Stop();
StopCoroutine(LocationCoroutine());
}

    This topic has been closed for replies.