Frage

Ich habe einige Probleme mit einer Großkreisentfernung Berechnung einer Karte.

Kontext: http://airports.palzkill.de/search/

Die Karte soll Arbeit als Großkreisentfernung Suche Karte - Sie können die Kreise Mittelmarkierung oder den Radius Markierung bewegen, und der Kreis wird kleiner oder größer. Für Debug-Zwecke, die Boxen Titelfeld zeigt die berechnete Entfernung in km.

Dies funktioniert nur gut, solange die Kreismitte der Nähe von 0/0 ist, und der Radius Marker ist nicht weit davon entfernt. Je mehr Sie sich bewegen entweder der Marker zu „Extreme“, die mehr aus irgendeiner Tangente das Ganze geht und produziert nichts als Mist.

Dies ist der Code für die Berechnung des Updates verwendet, können Sie auch den gesamten Code in der JS-Datei js.js finden, Linien 146-184:

function searchmapupdate()
{   
rad_lat_radiuspos = (circleradiusmarker.getPosition().lat()*Math.PI/180);
rad_lon_radiuspos = (circleradiusmarker.getPosition().lng()*Math.PI/180);
rad_lat_circlecenter = (circlecentermarker.getPosition().lat()*Math.PI/180);
rad_lon_circlecenter = (circlecentermarker.getPosition().lng()*Math.PI/180);

circleradiusvar = Math.acos(Math.sin(rad_lat_circlecenter)*Math.sin(rad_lat_radiuspos)+Math.cos(rad_lat_circlecenter)*Math.cos(rad_lon_radiuspos)*Math.cos(rad_lon_circlecenter-rad_lon_radiuspos))*6371.01*1000;

if (isNaN(circleradiusvar)==false) circle.setOptions({center:circlecentermarker.getPosition(), radius:circleradiusvar});

document.getElementById("mapsearchhead").innerHTML = Math.round(circleradiusvar/1000);
}

Da die ganze Sache tut berechnen einige korrekte Ausgabe nehme ich die Mathematik selbst nicht ganz falsch ist, ich denke, es ist nur ein paar „Besserungs“ Sachen fehlt? Leider bin ich absolut lausig bei Trigonometrie, so dass ich nicht einen Anhaltspunkt habe, was hier falsch sein könnte, oder auch dann, wenn für Ideen über die Suche zu starten, wie es zu beheben.

Marco

P. S .: Ich weiß, dass aufgrund des sphärischen Charakter der Projektion, das Ganze hat um den Pol „kontra-intuitive“ zu handeln. Aber das tut wirklich erklären, was passiert, wenn man beide Marker die Nähe der Datumsgrenze bewegt um den Äquator (0/179, 0 / -179).

War es hilfreich?

Lösung

Okay, nach etwas mehr Code Implementierung, entdeckte ich tatsächlich einen Fehler in der Gleichung: Mit lon, wo ich lat verwendet haben, sollte

.

Und ja, ich bin jetzt sehr peinlich -. Und ebenso verärgert, 5 Stunden Blick auf den Bedingungen verbracht zu haben und nicht diese offensichtlichen Fehler früher zu finden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top