TMapViewer / Pfad einzeichnen

Rund um die LCL und andere Komponenten
Antworten
yogie
Beiträge: 14
Registriert: Di 6. Dez 2022, 11:27

TMapViewer / Pfad einzeichnen

Beitrag von yogie »

Hallo zusammen,
ich portiere gerade eine Anwendung von Delphi auf Lazarus. Für die Kartendarstellung
hatte ich bisher eine Eigenentwicklung, jetzt kommt TMapViewer zum Einsatz.

Hat jemand ein Beispiel wie man eine Liste von GPS-Koordinaten als Pfad (Polygon)
einblenden kann?

Ich bin von der Demo ohne Add Ons ausgegangen

wp_xyz
Beiträge: 5304
Registriert: Fr 8. Apr 2011, 09:01

Re: TMapViewer / Pfad einzeichnen

Beitrag von wp_xyz »

Im FullDemo wird in TGPSListViewer.BtnLoadTrackClick, Unit gpsListForm, ein Track Punkt für Punkt eingelesen. Im wiki ist dasselbe Verfahren unter https://wiki.lazarus.freepascal.org/Laz ... stom_track beschrieben (bitte auch die Kapitel vorher lesen, weil da die Datenstrukturen erläutert werden).

Alternativ kann man auch mit einem TMapTrack arbeiten (den man auch im Objekt-Inspektor anlegen kann). Aus meinem aktuellen Projekt "SimpleRoutePlanner" (https://codeberg.org/wpam/SimpleRoutePlanner):

Code: Alles auswählen

function TMainForm.GetLayer: TMapLayer;
begin
  if MapView.Layers.Count = 0 then
    Result := MapView.Layers.Add as TMapLayer
  else
    Result := MapView.Layers[0];
end;

procedure TMainForm.AddRouteToMap(ALine: TRealPointArray);
var
  i: Integer;
  layer: TMapLayer;
  track: TMapTrack;
  point: TMapTrackPoint;
begin
  layer := GetLayer;
  layer.Tracks.Clear;
  if Length(ALine) = 0 then
    exit;

  track := layer.Tracks.Add as TMapTrack;
  for i:= 0 to High(ALine) do
  begin
    point := track.Points.Add as TMapTrackPoint;
    point.RealPoint := ALine[i];
  end;
end;

yogie
Beiträge: 14
Registriert: Di 6. Dez 2022, 11:27

Re: TMapViewer / Pfad einzeichnen

Beitrag von yogie »

oh, vielen Dank,
das WiKi hatte ich noch nicht gefunden.
Das schaue ich mir jetzt erstmal an.

yogie
Beiträge: 14
Registriert: Di 6. Dez 2022, 11:27

Re: TMapViewer / Pfad einzeichnen

Beitrag von yogie »

Habe es jetzt eingebaut ,klappt prima! Nochmal danke für die Tips!

Antworten