AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein GMLib (Google Map), wer kennt sich aus?

GMLib (Google Map), wer kennt sich aus?

Ein Thema von SiggiP · begonnen am 8. Nov 2014 · letzter Beitrag vom 25. Mai 2015
Antwort Antwort
SiggiP

Registriert seit: 29. Sep 2014
3 Beiträge
 
#1

GMLib (Google Map), wer kennt sich aus?

  Alt 8. Nov 2014, 15:44
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
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: GMLib (Google Map), wer kennt sich aus?

  Alt 8. Nov 2014, 17:27
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

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. das hier zu finden

Geändert von Perlsau ( 8. Nov 2014 um 17:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: GMLib (Google Map), wer kennt sich aus?

  Alt 8. Nov 2014, 18:19
Folgenden Code benutze ich zur Distanzberechnung mittels Haversine-Formel (http://en.wikipedia.org/wiki/Haversine_formula) auf der Erdkugel zwischen zwei GPS-Koordinaten, der ist recht genau:

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;
Stefan
  Mit Zitat antworten Zitat
SiggiP

Registriert seit: 29. Sep 2014
3 Beiträge
 
#4

AW: GMLib (Google Map), wer kennt sich aus?

  Alt 8. Nov 2014, 19:20
Hi GPRSNerd


Habe den Code umgesetzt. Es gibt da noch ein paar kleine Differenzen zwischen www.luftlinie.org
und meinen Berechnungen. Das werde ich aber noch mit dem Navi checken...

Hier der Link zur GMLib: http://www.cadetill.com/category/programacion/delphi/

Danke für die Antworten.



Grüsse, Siggi
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: GMLib (Google Map), wer kennt sich aus?

  Alt 8. Nov 2014, 19:42
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:
Either formula is only an approximation when applied to the Earth, which is not a perfect sphere: the "Earth radius" R varies from 6356.752 km at the poles to 6378.137 km at the equator. More importantly, the radius of curvature of a north-south line on the earth's surface is 1% greater at the poles (≈6399.594 km) than at the equator (≈6335.439 km)— so the haversine formula and law of cosines can't be guaranteed correct to better than 0.5%.
Stefan

Geändert von GPRSNerd ( 8. Nov 2014 um 19:56 Uhr)
  Mit Zitat antworten Zitat
DelphiFan2008

Registriert seit: 4. Dez 2008
81 Beiträge
 
Delphi XE2 Starter
 
#6

AW: GMLib (Google Map), wer kennt sich aus?

  Alt 25. Mai 2015, 18:28
Falls noch aktuell, schau mal hier
Orthodrome
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz