Jump to content
Unity Insider Forum

Zugriff auf GPS


Ron Dragor

Recommended Posts

Hi, Leute!

 

Weis jemand, wie ich in Unity per c# Zugriff auf das GPS bei Android und iOS bekomme? Ich sollte die aktuelle Position als Koordinaten in variablen speichern und anzeigen können. Am Besten mit Google Maps anbindung. Jedoch hab ich kein Pln, wie ich darauf zugreifen kann.

 

Weis das jemand?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab mir mal den Code zu Testzwecken aus der Unity Documentation kopiert:

 

IEnumerator GPS()
   {
    if (!Input.location.isEnabledByUser)
	    return;
    Input.location.Start();
    int maxWait = 20;
    while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
    {
	    yield return new WaitForSeconds(1);
	    maxWait--;
    }
    if (maxWait < 1)
    {
	    print("Timed out");
	    return;
    }
    if (Input.location.status == LocationServiceStatus.Failed)
    {
	    print("Unable to determine device location");
	    return;
    }
    else
	    print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
    Input.location.Stop();
   }

 

Bei return; bekomme ich folgende Fehlermeldung:

 

Assets/Scripte/Berechnungen.cs(331,13): error CS0126: An object of a type convertible to `bool' is required for the return statement

 

An dieser Stelle wird doch abgefragt, ob das GPS am Gerät eingeschaltet icht, oder nicht?:

if (!Input.location.isEnabledByUser)
	    return;
	    Input.location.Start();

 

Fehlen da nicht auch Klammern:

 

if (!Input.location.isEnabledByUser)
    {
	    return;
	    Input.location.Start();
    }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da hat wohl wer bei Unity nicht nachgedacht. Eine Coroutine beendet man nicht mit return, sondern mit yield break;

Also einfach alle returns erstetzen, dann sollte zumindest das kein Problem mehr sein ;)

 

//e: Dass Input.location.Stop() unter Umständen nicht aufgerufen wird, finde ich auch etwas besorgniserregend.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok. Danke. Ist mir aber schon ein paar mal aufgefallen das manches Codes in der Doku nicht funktionieren, weil kleinere Fehler drin sind.

 

Ich setz dann einfach das Input.location.Stop() mit auf den "Beenden" Button.

 

Hat super funktioniert mit yield. Danke!

 

Geht das überhaupt aus Unity in der Android App direkt die Koordinaten an Google Maps zu senden?

Also, dass sich der Browser automatisch öffnet und die Koordinaten markiert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...