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