![]() |
GMLib (Google Map), wer kennt sich aus?
Hallo Zusammen
In einem Projekt (Delphi) benutze ich GMLib um diverse Routen zu berechnen. Das funktioniert auch ganz gut. Ich brauche aber auch die Funktion, um die Luftlinie zwischen zwei Markern zu berechnen. Diverse Funktionen dafür habe ich in der GMLib gefunden, die liefern aber nicht die erwarteten Werte. Wenn jemand eine Lösung weiß...? Grüße, Siggi |
AW: GMLib (Google Map), wer kennt sich aus?
Kein Link zur GMLib, kein Code, keine Fehlerbeschreibung – ich würde daher mal so ins Blaue raten: Die Lösung besteht darin, daß du deine Erwartungen änderst, was die Werte angeht, und schon paßt's :stupid:
Oder mal so ausgedrückt: Wenn eine Library falsche Ergebnisse liefert, taugt sie vielleicht nix? Die Forensuche wäre vielleicht auch mal einen Blick wert ... da gibt's z.B. ![]() |
AW: GMLib (Google Map), wer kennt sich aus?
Folgenden Code benutze ich zur Distanzberechnung mittels Haversine-Formel (
![]()
Delphi-Quellcode:
const
EarthRadius = 6371.0; //Mean Earth radius in Km pi = System.Pi; half_pi = pi/2; rad = pi/180; //conversion factor for degrees into radians Function atan2(const y, x: Extended): Extended; begin Result := 0.0; //temp. if x = 0.0 then begin if y = 0.0 then raise EMathError.Create('Math Error in atan2: undefined for y=x=0') else if y > 0.0 then Result := + half_pi else Result := - half_pi; end else begin if x > 0.0 then Result := arctan(y/x) else if x < 0.0 then begin if y >= 0.0 then Result := arctan(y/x)+pi else Result := arctan(y/x)-pi; end; end; end; Function CalcDistance(const lonFrom, lonTo, latFrom, latTo: Extended): Extended; Var dlon, dlat, a, c: Extended; begin if ((latFrom = latTo) and (lonFrom = lonTo)) then //Trivialfall, identische Punkte Result := 0.0 else begin dlon := (lonTo-lonFrom)*rad; dlat := (latTo-latFrom)*rad; //The Haversine formula a:= sqr(sin(dlat/2)) + cos(latFrom*rad) * cos(latTo*rad) * sqr(sin(dlon/2)); try c := 2 * atan2(sqrt(a), sqrt(1-a)); except c := 0; end; //Distanz/Großkreis auf dem Erdradius Result := EarthRadius * c; end; end; |
AW: GMLib (Google Map), wer kennt sich aus?
Hi GPRSNerd
Habe den Code umgesetzt. Es gibt da noch ein paar kleine Differenzen zwischen ![]() und meinen Berechnungen. Das werde ich aber noch mit dem Navi checken... :) Hier der Link zur GMLib: ![]() Danke für die Antworten. Grüsse, Siggi |
AW: GMLib (Google Map), wer kennt sich aus?
Die Formel geht von einer idealen sphärischen Kugel aus, der Radius ist auch "umstritten" und wird verschiedentlich anders gesetzt, daher sind kleine Abweichungen normal.
Zitat:
|
AW: GMLib (Google Map), wer kennt sich aus?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz