Einzelnen Beitrag anzeigen

DelphiFan2008

Registriert seit: 4. Dez 2008
84 Beiträge
 
Delphi XE2 Starter
 
#221

AW: Google Maps über COM (Component Object Model)

  Alt 15. Apr 2012, 18:18
Hallo Thom,

mit deinem Tip komme ich jetzt an die detaillierten Datenpunkte mit folgendem Code

Delphi-Quellcode:
var i,k,l : Integer;
     f1,f2 : Double;
     MyRoute : TDirectionsRoute;
     TP : TTrackPoint;
     s : String;
begin
  LB.Clear;
  TD.Clear;
  f1 := 0.0;

  with Script do
  begin
    MyRoute := DirectionsRenderer[0].Directions.Routes[0];

    for i := 0 to MyRoute.Legs.Count-1 do
    begin
      s := MyRoute.Legs[i].StartAddress+' nach '+MyRoute.Legs[i].EndAddress;
      LB.Items.Add( Format( '[%d] %s',[i+1,s] ));
      LB.Items.Add( '' );

      for k := 0 to MyRoute.Legs[i].Steps.Count-1 do
      begin
        // BEGIN Anweisungen für diesen Schritt in Form einer Zeichenfolge
        s := MyRoute.Legs[i].Steps[k].Instructions;
        f2 := MyRoute.Legs[i].Steps[k].Distance.Value / 1000;
        f1 := f1 + f2;
        LB.Items.Add( Format( '[%d] %s %1.2fkm',[k+1,s,f2] ));
        // END Anweisungen für diesen Schritt in Form einer Zeichenfolge

        for l := 0 to MyRoute.Legs[i].Steps[k].Path.Count-1 do
        begin
          // BEGIN Speicher für TrackPoint reservieren und Daten erfassen
          TP := TTrackPoint.Create;

          TP.LatitudeDegrees := MyRoute.Legs[i].Steps[k].Path[l].Lat;
          TP.LongitudeDegrees := MyRoute.Legs[i].Steps[k].Path[l].Lng;

          TD.TrackPointList.Add( TP );
          // END Speicher für TrackPoint reservieren und Daten erfassen
        end;
      end;
      LB.Items.Add( '' );
      LB.Items.Add( Format( 'Streckenlänge : %1.2fkm',[f1] ));
    end;
  end;

  TD.Export...
jetzt wird es noch spannend die entsprechenden Höhewerte mittels "PathElevationRequest" bzw. "LocationElevationRequest" zu ermitteln. Bei meiner Demo-Route entstehen für den Track ca. 5100 Wertepaare LAT/LNG auf ca. 130km. Du hattest mir schon mal bei der Ermittlung geholfen. Damals war bei ca. 1000 Anfragen eine Pause von ca. 8 Sekunden notwendig. Werde mal verschiedene Ansätze versuchen. Der BikeRoutToaster scheint keine Pause zu verwenden, das Höhenprofil wird parallel erzeugt. Mir fehlen schon die Grundkenntnisse in JavaScript um an den Quelltext zu gelangen bzw. den zu lesen

Danke und Gruß DelphiFan2008
  Mit Zitat antworten Zitat