• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Koordinaten vergleichen

le2064

Geocacher
Hab jetzt mal was anderes Verrücktes vor.

Ich möchte das mein Wherigo die aktuelle Position bestimmt und die Entfernung zu einer festen Koordinate die sich in einer Variable befindet bestimmt und vielleicht in eine zweite Variable packt. Das ganze möchte ich gerne mit einem Button ausführen lassen.
Sprich Button drücken. Aktuelle Position ermitteln. Entfernung zu den Koordinaten in der Variable ermitteln. Entfernung in m in eine zweite Variable schreiben.

Ich denke ohne LUA kommt man da nicht weiter ;)
 

Charlenni

Geomaster
Na ja, so schwer dürfte das nicht sein. Aktuelle Position ist in Player.ObjectLocation (bitte nicht festnageln, bin gerade nicht zu Hause), dann eine Variable für den Zonenpunkt erstelle (varPunkt = Wherigo.ZonePoint()) und befüllen (varPunkt.Latitude und varPunkt.Longitude). Abstand und Richtung dann mit Wherigo.VectorToPoint(von,nach) bestimmen. Liefert Distanz und Winkel zurück.
 
OP
L

le2064

Geocacher
Und jetzt mal für Leute die nicht ganz so helle mit LUA sind ;)

Habe jetzt eine Variable
"CachePosition" als Text mit dem Inhalt: "52.834247N 8.019161E"
"AktuellePosition" als Text mit dem Inhalt: gar nichts ;) wird ja noch vom Programm eingefügt
"Abstand" als Text mit dem Inhalt: gar nichts ;) wird ja noch vom Programm eingefügt

Dann ein Gegenstand mit einem Button wo ich jetzt den Lua Cood einprogrammieren will.
 

Charlenni

Geomaster
Im Startereignis OnStart

varPunkt = Wherigo.ZonePoint()
varPunkt.Latitude = 52.834
varPunkt.Longitude = 8.019

Im Button Ereignis dann

d,winkel = Wherigo.VectorToPoint(Player.ObjectLocation,varPunkt)
abstand = d.GetValue('m')

Alles get über Zahlen, nichts über Text.

Vielleicht kann jemand mit richtiger Tastatur noch etwas mehr schreiben :)
 
OP
L

le2064

Geocacher
Ok gut so weit

Ich habe "Beim Start"
Lua Benutzerdefinierter Code:
varPunkt = Wherigo.ZonePoint()
varPunkt.Latitude = 52.834247
varPunkt.Longitude = 8.019161

Dann hinter dem Button
Lua Benutzerdefinierter Code:
d,winkel = Wherigo.VectorToPoint(Player.ObjectLocation,varPunkt)
abstand = d.GetValue('m')

Da drunter dann eine Meldung die mir Variable abstand auswirft.
Dort zeigt er mir immer nur 0 an.
 

Charlenni

Geomaster
Tja, könnte an der Abstandsberechnung liegen. Kann ich aber erst in 10 Tagen nachschauen, wenn ich wieder zu Hause bin ;-)
 

Charlenni

Geomaster
So, jetzt nochmals nachgeschaut.

Bei der Definition kann man gleich die Werte angeben, also

varPunkt = Wherigo.ZonePoint(52.834,8.019,0)

Und um den Abstand zu erhalten

abstand = d:GetValue 'm'

So sollte es dann klappen.
 
OP
L

le2064

Geocacher
Nein auch damit klappt es leider nicht.
irgendwo ist da noch der wurm drinne? bringt es wann wenn ich die datei mal hochlade und ihr drauf schaut?
 

Anhänge

  • Welche Richtung.zip
    1,6 KB · Aufrufe: 20
OP
L

le2064

Geocacher
Man ich bin sooooo blöd :)
Hab es jetzt gelöst, mein Problem war das übergeben des LUA Wertes in eine Wherigo Variable ;)

wusste nicht das die Variable "Abstand" in LUA = Abstand einer Wherigo Variable ist :)

Ich nehme also die Funktion "Festlegen"
Auf der linken Seite die Wherigo Variable nehme und auf der rechten Seite "Lua Benutzerdefinierter Ausdruck" und darein die LUA Variable nehme. Klappt es super :)

Kleiner Fehler RIESEN Auswirkung :)

Trotzdem vielen dank an alle helfer.
 
OP
L

le2064

Geocacher
Also für alle die, die vor dem gleichen Problem stehen.

Unter die Funktion "Beim Starten" folgenden "Lua Benutzerdefinierter Code"
Code:
varPunkt = Wherigo.ZonePoint(52.9837206,8.9026623,0)

Um dann ab zu fragen wie weit man weg ist folgendes:
Code:
d, winkel = Wherigo.VectorToPoint(Player.ObjectLocation,varPunkt)
abstand = d:GetValue 'm';

dann bekommt man in der LUA Variable "abstand" einen M Wert mit langer Kommastelle, denke mal auf ein Meter kommt es eh nicht an, also kann man den Wert auch aufrunden dafür einfach unter den Code oben mit der 3. Zeile anpassen
Code:
d, winkel = Wherigo.VectorToPoint(Player.ObjectLocation,varPunkt)
abstand = d:GetValue 'm';
abstand = math.ceil( abstand )

nun steht in der LUA Variable "abstand" ein m Wert ohne Kommastelle. Um diesen dann in eine Urwigo Variable zu bekommen (Die man unter Objekte und Eigenschaften auswählen kann) zieht man die Funktion "Festlegen" unter den obigen Code.
Auf die linke Seite dann die Urwigo Variable auf die rechte Seite "Lua Benutzerdefinierter Ausdruck" mit dem Inhalt "abstand"

Ich hoffe es ist so erklärt, das jeder auch Leute wie ich die kaum Erfahrung mit LUA haben, diese Funktion verwenden können.

Vielen dank an alle die mir bis hierher geholfen haben!
 
Oben