Problem mit Javascript Variable und einer Function

#1
Hallo Gemeinde, leider laufe ich seit 2 Tagen gegen die Wand..

Das Script soll den Winkel zweier Punkte im Koordinatensystem berechnen.
Was auch wunderbar klappt wenn ich die Koordinaten in die Variablen polat2 und polong2 schreibe.
Wenn ich die Koordinaten über das Handy Gps hole "verrechnet" sich das Script obwohl die Koordinaten den gleichen Standort erhielten als wenn ich es eingebe .
Hat jemand eine Idee ? Vielen Dank , Joehi

html start ->kopieren und im Browser öffnen oder unter www.jspro.de/geoloc.html auch zu finden

<!DOCTYPE html>

<meta charset="utf-8">


<head>
<style>
body { max-width:550px;}
table {background-color:lightblue; min-width:530px;}
td {background-color:white;}
</style>
<script src="https://www.jspro.de/jinfo.js"></script>




<script src="https://www.jspro.de/locatesave1.js"></script> <!-- geo koordinaten -->




<script>

$(document).ready(function(){



window.addEventListener('deviceorientation', function(eventData) {
var dir = eventData.alpha
deviceOrientationHandler(dir);
}, false);


function deviceOrientationHandler(dir) {
document.getElementById("kompass").innerHTML = Math.ceil(dir);


}

} );
</script>

<script>

$(document).ready(function(){


$('#ok').click(function(){


setInterval(function(){
getAngle();
},5000) ;


});

function getAngle() {
var a =0;
var xalat=0;


var polat1 = $('#latitude').html(); // lese Koordinaten aus html
var polong1 = $('#longitude').html(); // lese Longitude aus html
var polat2 = (polat1*1); // weiter mit String zu Zahl
var polong2 = (polong1*1); // weiter mit String zu Zahl



// Zum Testen hier die meine Standortkoordinaten eintragen dann rechnert er den Winkel richtig , wenn über Gps 30 - 70 % Abweichung
// selbst wenn er die gleichen Koordinaten erhällt


var xalon1 =polong2; //Übergebe Mein Standort koordinate Longitude
var xalat1 = polat2; // Übergebe Mein Standort koordinate Latitude




var komp = $('#kompass').html(); //Lese Kompass nicht wichtig


// Ziel Punkt

var xalon= 38.849989; // Ziel Koordinate Longitude (hier müsste zum Testen ein Standort nördlich von deinem jeztigen Standort rein )
var xalat= -0.162357; // Ziel Koordinate Latitude (hier müsste zum Testen ein Standort nördlich von deinem jeztigen Standort rein )


var YEnd =xalon; //Übergebe Koordinaten an Rechner
var YStart =xalon1; //Übergebe Koordinaten an Rechner
var XEnd =xalat; //Übergebe Koordinaten an Rechner
var XStart =xalat1; //Übergebe Koordinaten an Rechner


// Rechner Start Ausgabe in #Ausgabe
var a = Math.atan2(YEnd - YStart, XEnd - XStart);
if (a < 0) a += 2*Math.PI;
a -= (Math.PI/2); //shift by 90deg
if (a < 0) a += 2*Math.PI;
if (a < 0) a += 2*Math.PI;
a = Math.abs((Math.PI*2) - a); //invert rotation
a = a*180/Math.PI; //convert to deg


$('#ausgabe').html('Winkel von Standort zu Ziel->'+a + '<br>latitude: '+polat2+ '<br/>longitude: '+polong2);


}



});
</script></head>
<body>
<div id="off">
<p>Aktiviere GPS <br/>
<button style=" width:550px; height:140px; font-weight:bold; font-size:23px; color:green;" id="ok">GPS aktivieren </button></p>
</div>


<div id="map" style="width:530px; height:500px; border:1px solid red;" class="smallmap"></div>


<table><tr><td>Längengrad:</td><td><p id="latitude"></p></td></tr>
<tr><td>Breitengrad:</td><td><p id="longitude"></p></td></tr>
<tr><td>Kompass:</td><td><p id="kompass"></p></td></tr>
</table>





<p id="rechnung" style="color:green;"> </p>
<div id="info" style="color:red;"></div>

<p id="demo" style="color:blue;"></p>
<p id="ausgabe"></p>


</body>
</html>
 
#4
Hallo Sempervivum, vielen Dank für deine Hilfe das freut mich sehr.
Verwechselt ... gerade getestet
einmal längen breiten Grad verdreht auf Standort dann kommt 70 Grad statt null norden raus.
dann auch nochmal die start ziel rechnung der mir den winkel dann richtung süden ausgibt was auch ungefähr stimmt und sein sollte.

(Ziel Punkt Koordinaten Zeile 84 -85 xalong; xalat; sind von mir aus Norden ca 0-3 Grad )
Die Längen Breitengrade oben sehen für mich normal aus , meine Abfrage Ausgabe läuft in einer Schleife nur alle 5 Sekunden die letzten Ziffern der Koordinaten hüpfen am Mobiltelefon.

Ich vermute ich hab irgendwas mit der Function showAngle und den Variablen.
Mir fällt aber nix anderes ein als die variablen zu einer Zahl zu machen.
 
#5
Hi Lord Hafi schön dass du da bis :) Variablen sind Longitude = long Latitude = lat im Variablennamen.

4 Variablen :

Standort Variablen: xalong1; xalat1;
Ziel Punkt Variablen: xalong; xalat;


Norden = 0 Grad
Osten = 90 Grad
Süden = 180 Grad
Westen = 270 Grad


Hier sind 2 Koordinaten von Nürnberg nach Erfurt liegt ca auf Norden 0 Grad


Nürnberg:
xalat1=49.434482; xalong1=11.166510;

Erfurt Norden auf ca 0 Grad
xalat=50.967162; xalong=11.083477;
 
Zuletzt bearbeitet:

lord_haffi

Well-Known Member
c-b Experte
#7
Ich hätte mal ein paar Fragen bzw. Anmerkungen:
  1. Worin genau besteht jetzt dein Problem? Dass immer noch nicht der richtige Winkel rauskommt?
  2. Was für ein Winkel soll das eigentlich sein? Die Erde ist schließlich eine Kugel. Bei sphärischer Trigonometrie kannst du den Winkel nicht einfach mit dem Arcustangens bestimmen.
  3. Dein impliziter Typecast via (polat1*1) ist nicht so schön, finde ich.. Mach es doch einfach mit Number(polat1).
  4. Wenn du später die Zielkoordinaten durch den Benutzer festlegen lassen willst, solltest du den TypeError abfangen (wenn polat keine Zahl ist). Das kannst du zum einen mit einem try-catch-Statement machen zum anderen kannst du es auch direkt im HTML-Code abfangen (<input type="number">).
  5. Codetags!
  6. Bedenke, dass du bei den Umkehrfunktionen der trigonometrischen Funktionen (arcsin, arccos, arctan, arccot) die verschiedenen Wertebereiche und Orientierung der Dreiecke beachten musst. Je nachdem, welchen Winkel du haben willst, musst du da Anpassungen für die verschiedenen Fälle vornehmen.
 
#8
Großartig es geht :) Danke Euch beiden habe gestern anscheinend die falschen Variablen vertauscht genau das wars.
Für die Anwendung reicht mir der Richtungswinkel weil es sich nur um Objekte in Sichtweite handelt darf meine Welt eine Scheibe sein :).
 
Oben