You've already forked lazarus-ccr
LazMapViewer: Add new properties LineColor and LineWidth to TGpsTrack. Add demo showing several individually colored tracks. Add some utility functions.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8102 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="ColoredTracks_Demo"/>
|
||||
<Scaled Value="True"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<BuildModes>
|
||||
<Item Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
</RunParams>
|
||||
<RequiredPackages>
|
||||
<Item>
|
||||
<PackageName Value="lazMapViewerPkg"/>
|
||||
</Item>
|
||||
<Item>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item>
|
||||
</RequiredPackages>
|
||||
<Units>
|
||||
<Unit>
|
||||
<Filename Value="coloredtracks_demo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit>
|
||||
<Unit>
|
||||
<Filename Value="main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainForm"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="coloredtracks_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions>
|
||||
<Item>
|
||||
<Name Value="EAbort"/>
|
||||
</Item>
|
||||
<Item>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item>
|
||||
<Item>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
@ -0,0 +1,25 @@
|
||||
program ColoredTracks_Demo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}
|
||||
cthreads,
|
||||
{$ENDIF}
|
||||
{$IFDEF HASAMIGA}
|
||||
athreads,
|
||||
{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, main
|
||||
{ you can add units after this };
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource:=True;
|
||||
Application.Scaled:=True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
||||
|
371
components/lazmapviewer/examples/colored_tracks/main.lfm
Normal file
371
components/lazmapviewer/examples/colored_tracks/main.lfm
Normal file
@ -0,0 +1,371 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 285
|
||||
Height = 600
|
||||
Top = 131
|
||||
Width = 1000
|
||||
Caption = 'Grand Canyon Hike'
|
||||
ClientHeight = 600
|
||||
ClientWidth = 1000
|
||||
OnActivate = FormActivate
|
||||
LCLVersion = '2.3.0.0'
|
||||
object MapView: TMapView
|
||||
Left = 0
|
||||
Height = 600
|
||||
Top = 0
|
||||
Width = 606
|
||||
Align = alClient
|
||||
CachePath = '../../../../cache/'
|
||||
DefaultTrackColor = 140
|
||||
DefaultTrackWidth = 3
|
||||
DownloadEngine = MapView.BuiltInDLE
|
||||
DrawingEngine = MapView.BuiltInDE
|
||||
Font.CharSet = ANSI_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Pitch = fpVariable
|
||||
MapProvider = 'OpenStreetMap Mapnik'
|
||||
POIImage.Data = {
|
||||
36170000424D36170000000000003600000028000000200000002E0000000100
|
||||
2000000000000017000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FD560000FC4CFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000F1110000FEE70000FEE10000
|
||||
EA0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FE9A0000FFFF0000FFFF0000
|
||||
FE8FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF000000FB3E0000FEFE0000FFFF0000FFFF0000
|
||||
FEFC0000FB35FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000000DB070000FED70000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FECF0000C004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000000FE800000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FD75FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF000000F9290000FEF90000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FEF50000F821FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00000080020000FEC30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FEB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000000FD660000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FD5CFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||
F5180000FEEF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEEA0000F213FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||
FEAA0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE9FFFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FC4C0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFE0000FC42FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000EA0C0000FEE10000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEDB0000E309FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FE900000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE86FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FB350000FEFC0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFA0000
|
||||
FA2DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF000000C0040000FED00000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FEC700008002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF000000FD770000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FD6CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000000F8230000FEF80000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FEF50000F61CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000000FECF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FEC8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF000000FE820000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FD79FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000000F9270000FEFD0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FEFD0000F822FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000000FEA70000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FEF70000FEB50000FE810000FD670000FD670000
|
||||
FE810000FEB50000FEF70000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEA7FFFFFF00FFFFFF00FFFFFF000000
|
||||
FB340000FEFE0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FEFD0000FE920000F213FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF000000F2130000FE920000FEFD0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEFE0000FB34FFFFFF00FFFFFF000000
|
||||
FEAC0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FEF60000FC4DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF000000FC4D0000FEF60000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEACFFFFFF000000F3150000
|
||||
FEFA0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFE0000
|
||||
FC54FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FC540000FEFE0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFA0000F3150000FD610000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEA2FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FEA20000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FD610000FEA00000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFD0000F823FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000F8230000FEFD0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEA00000FECD0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEC5FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FEC50000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FECD0000FEEC0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE8CFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FE8C0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEEC0000FEFA0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FD72FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FD720000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEFA0000FEF70000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FD75FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FD750000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEF70000FEE80000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE95FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FE950000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEE80000FEC50000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FED5FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FED50000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEC50000FE940000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FB37FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FB370000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE940000FC520000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEC00000
|
||||
8002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000080020000FEC00000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FC520000E60A0000
|
||||
FEF20000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FD7EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FD7E0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEF20000E60AFFFFFF000000
|
||||
FE950000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FEFE0000FD7F00008002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00000080020000FD7F0000FEFE0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FE95FFFFFF00FFFFFF000000
|
||||
F8200000FEF80000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FEC30000FB3DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF000000FB3D0000FEC30000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEF80000F820FFFFFF00FFFFFF00FFFF
|
||||
FF000000FE830000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEDB0000FE9C0000FD7E0000FD7E0000
|
||||
FE9C0000FEDB0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FE83FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000000DB070000FECC0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FECC0000DB07FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF000000F71F0000FEE40000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FEE40000F71FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF000000FA2B0000FEE50000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FEE50000FA2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF000000F8210000FECD0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FECE0000F821FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000DB070000FE850000FEF90000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FEF90000FE850000
|
||||
DB07FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000F8230000
|
||||
FE990000FEF30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FEF30000FE990000F823FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF000000EA0C0000FD570000FE980000FEC70000FEEB0000FEF90000FEF90000
|
||||
FEEB0000FEC70000FE980000FD570000EA0CFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
POITextBgColor = clCream
|
||||
OnCenterMove = MapViewCenterMove
|
||||
OnZoomChange = MapViewZoomChange
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 619
|
||||
Height = 584
|
||||
Top = 8
|
||||
Width = 373
|
||||
Align = alRight
|
||||
BorderSpacing.Around = 8
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 584
|
||||
ClientWidth = 373
|
||||
TabOrder = 1
|
||||
object TrackGrid: TStringGrid
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = lblInfo
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = clbTrackColor
|
||||
Left = 0
|
||||
Height = 469
|
||||
Top = 58
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
AutoFillColumns = True
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
DefaultColWidth = 30
|
||||
MouseWheelOption = mwGrid
|
||||
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSelect, goThumbTracking, goFixedRowNumbering, goTruncCellHints]
|
||||
TabOrder = 0
|
||||
OnClick = TrackGridClick
|
||||
OnPrepareCanvas = TrackGridPrepareCanvas
|
||||
ColWidths = (
|
||||
30
|
||||
85
|
||||
85
|
||||
85
|
||||
84
|
||||
)
|
||||
Cells = (
|
||||
4
|
||||
1
|
||||
0
|
||||
'Latitude'
|
||||
2
|
||||
0
|
||||
'Longitude'
|
||||
3
|
||||
0
|
||||
'Altitude'
|
||||
4
|
||||
0
|
||||
'Time'
|
||||
)
|
||||
end
|
||||
object cbAutoTrace: TCheckBox
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideBottom.Control = Panel1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 19
|
||||
Top = 565
|
||||
Width = 150
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Trace track automatically'
|
||||
OnChange = cbAutoTraceChange
|
||||
TabOrder = 1
|
||||
end
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = clbTrackColor
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 539
|
||||
Width = 60
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Track color:'
|
||||
end
|
||||
object clbTrackColor: TColorBox
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = cbAutoTrace
|
||||
Left = 68
|
||||
Height = 22
|
||||
Top = 535
|
||||
Width = 305
|
||||
Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
DropDownCount = 32
|
||||
ItemHeight = 16
|
||||
OnChange = clbTrackColorChange
|
||||
TabOrder = 2
|
||||
end
|
||||
object lblInfo: TLabel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = Bevel1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 35
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Click on row to display point in map'
|
||||
end
|
||||
object lblMapCenter: TLabel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = Panel1
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Caption = 'Map center: -'
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = lblMapCenter
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 4
|
||||
Top = 23
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
end
|
||||
object Splitter1: TSplitter
|
||||
Left = 606
|
||||
Height = 600
|
||||
Top = 0
|
||||
Width = 5
|
||||
Align = alRight
|
||||
ResizeAnchor = akRight
|
||||
end
|
||||
object Timer: TTimer
|
||||
Enabled = False
|
||||
Interval = 10
|
||||
OnTimer = TimerTimer
|
||||
Left = 733
|
||||
Top = 392
|
||||
end
|
||||
end
|
212
components/lazmapviewer/examples/colored_tracks/main.pas
Normal file
212
components/lazmapviewer/examples/colored_tracks/main.pas
Normal file
@ -0,0 +1,212 @@
|
||||
unit main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||
Grids, StdCtrls, ColorBox, mvMapViewer, mvGpsObj;
|
||||
|
||||
type
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
TMainForm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
cbAutoTrace: TCheckBox;
|
||||
clbTrackColor: TColorBox;
|
||||
Label1: TLabel;
|
||||
lblInfo: TLabel;
|
||||
lblMapCenter: TLabel;
|
||||
MapView: TMapView;
|
||||
Panel1: TPanel;
|
||||
Splitter1: TSplitter;
|
||||
TrackGrid: TStringGrid;
|
||||
Timer: TTimer;
|
||||
procedure cbAutoTraceChange(Sender: TObject);
|
||||
procedure clbTrackColorChange(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure MapViewCenterMove(Sender: TObject);
|
||||
procedure MapViewZoomChange(Sender: TObject);
|
||||
procedure TrackGridClick(Sender: TObject);
|
||||
procedure TrackGridPrepareCanvas(sender: TObject; {%H-}aCol, {%H-}aRow: Integer;
|
||||
{%H-}aState: TGridDrawState);
|
||||
procedure TimerTimer(Sender: TObject);
|
||||
private
|
||||
FTrack: TGpsTrack;
|
||||
FCurrPt: TGpsPoint;
|
||||
FCurrPtIndex: Integer;
|
||||
procedure InfoCaption;
|
||||
procedure LoadGPXSampleFile;
|
||||
procedure MoveTrackPointToIndex(ANewIndex: Integer);
|
||||
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
mvTypes, mvEngine, mvGpx;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
const
|
||||
_TRACK_PT_ = 10;
|
||||
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
procedure TMainForm.FormActivate(Sender: TObject);
|
||||
var
|
||||
crs: TCursor;
|
||||
begin
|
||||
crs := Screen.Cursor;
|
||||
Screen.Cursor := crHourglass;
|
||||
try
|
||||
MapView.MapProvider := 'Open Topo Map';
|
||||
MapView.Active := true;
|
||||
|
||||
// Center on Grand Canyon Village
|
||||
MapView.Zoom := 13;
|
||||
MapView.Center := RealPoint(DMSToDeg(36, 4, 32.2), -DMSToDeg(112, 7, 17.4));
|
||||
|
||||
clbTrackColor.Selected := MapView.DefaultTrackColor;
|
||||
|
||||
// Load a GPX file of a hiking trail into the Grand Canyon
|
||||
LoadGPXSampleFile;
|
||||
finally
|
||||
Screen.Cursor := crs;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.cbAutoTraceChange(Sender: TObject);
|
||||
begin
|
||||
if cbAutoTrace.Checked then
|
||||
begin
|
||||
if FCurrPtIndex = FTrack.Points.Count-1 then
|
||||
FCurrPtIndex := 0;
|
||||
Timer.Enabled := true;
|
||||
lblInfo.Enabled := false;
|
||||
TrackGrid.Enabled := false;
|
||||
end else begin
|
||||
Timer.Enabled := false;
|
||||
TrackGrid.Enabled := true;
|
||||
lblInfo.Enabled := true;
|
||||
TrackGrid.Row := FCurrPtIndex + 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.clbTrackColorChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DefaultTrackColor := clbTrackColor.Selected;
|
||||
{ or:
|
||||
if FTrack <> nil then
|
||||
begin
|
||||
FTrack.LineColor := clbTrackColor.Selected;
|
||||
MapView.Engine.Redraw;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
|
||||
procedure TMainForm.InfoCaption;
|
||||
begin
|
||||
lblMapCenter.Caption := Format('MapCenter: Lat %s, Lon %s, Zoom %d', [
|
||||
LatToStr(MapView.Center.Lat, true), LonToStr(MapView.Center.Lon, true), MapView.Zoom
|
||||
]);
|
||||
end;
|
||||
|
||||
procedure TMainForm.LoadGPXSampleFile;
|
||||
const
|
||||
GPX_FILE_NAME = '../../grand_canyon_trail.gpx';
|
||||
// file 972150.gpx from https://www.summitpost.org/grand-canyon-in-a-day/972150
|
||||
var
|
||||
reader: TGpxReader;
|
||||
b: TRealArea;
|
||||
i: Integer;
|
||||
id: Integer;
|
||||
begin
|
||||
reader := TGpxReader.Create;
|
||||
try
|
||||
id := reader.LoadFromFile(GPX_FILE_NAME, MapView.GPSItems, b);
|
||||
FTrack := MapView.GpxItems.FindTrackByID(id);
|
||||
MapView.Engine.ZoomOnArea(b);
|
||||
// FTrack := MapView.GpsItems.GetObjectsInArea(b).Items[0] as TGpsTrack;
|
||||
|
||||
FCurrPtIndex := 0;
|
||||
FCurrPt := TGpsPoint.Create(0, 0);
|
||||
FCurrPt.Assign(FTrack.Points[FCurrPtIndex]);
|
||||
FCurrPt.Name := Format('Time: %s'+LineEnding+'Elevation: %.0fm', [
|
||||
TimeToStr(FCurrPt.DateTime), FCurrPt.Elevation
|
||||
]);
|
||||
MapView.GPSItems.Add(FCurrPt, _TRACK_PT_);
|
||||
|
||||
// Show track points in grid
|
||||
TrackGrid.RowCount := FTrack.Points.Count + 1;
|
||||
for i := 0 to FTrack.Points.Count-1 do
|
||||
begin
|
||||
TrackGrid.Cells[1, i+1] := LatToStr(FTrack.Points[i].Lat, true);
|
||||
TrackGrid.Cells[2, i+1] := LonToStr(FTrack.Points[i].Lon, true);
|
||||
TrackGrid.Cells[3, i+1] := FormatFloat('0', FTrack.Points[i].Elevation)+'m';
|
||||
TrackGrid.Cells[4, i+1] := FormatDateTime('hh:nn:ss', FTrack.points[i].DateTime);
|
||||
end;
|
||||
finally
|
||||
reader.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.MapViewCenterMove(Sender: TObject);
|
||||
begin
|
||||
InfoCaption;
|
||||
end;
|
||||
|
||||
procedure TMainForm.MapViewZoomChange(Sender: TObject);
|
||||
begin
|
||||
InfoCaption;
|
||||
end;
|
||||
|
||||
procedure TMainForm.MoveTrackPointToIndex(ANewIndex: Integer);
|
||||
begin
|
||||
if (ANewIndex < 0) or (ANewIndex >= FTrack.Points.Count) then
|
||||
exit;
|
||||
FCurrPtIndex := ANewIndex;
|
||||
FCurrPt.Assign(FTrack.Points[FCurrPtIndex]);
|
||||
FCurrPt.Name := Format('Time: %s'+LineEnding+'Elevation: %.0fm', [
|
||||
TimeToStr(FCurrPt.DateTime), FCurrPt.Elevation
|
||||
]);
|
||||
MapView.Engine.Redraw;
|
||||
end;
|
||||
|
||||
procedure TMainForm.TrackGridClick(Sender: TObject);
|
||||
begin
|
||||
MoveTrackPointToIndex(TrackGrid.Row-1);
|
||||
end;
|
||||
|
||||
procedure TMainForm.TrackGridPrepareCanvas(sender: TObject; aCol, aRow: Integer;
|
||||
aState: TGridDrawState);
|
||||
var
|
||||
ts: TTextStyle;
|
||||
grid: TStringGrid;
|
||||
begin
|
||||
grid := Sender as TStringGrid;
|
||||
ts := grid.Canvas.TextStyle;
|
||||
ts.Alignment := taCenter;
|
||||
grid.Canvas.TextStyle := ts;
|
||||
end;
|
||||
|
||||
procedure TMainForm.TimerTimer(Sender: TObject);
|
||||
begin
|
||||
MoveTrackPointToIndex(FCurrPtIndex + 1);
|
||||
if FCurrPtIndex >= FTrack.Points.Count-1 then
|
||||
begin
|
||||
Timer.Enabled := false;
|
||||
cbAutoTrace.Checked := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -15,7 +15,6 @@
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
@ -41,7 +40,7 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
<Filename Value="..\colored_tracks\main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainForm"/>
|
||||
<HasResources Value="True"/>
|
||||
@ -53,7 +52,7 @@
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\trackdemo"/>
|
||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\track_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
|
@ -169,8 +169,10 @@ function RealPoint(Lat, Lon: Double): TRealPoint;
|
||||
function CalcGeoDistance(Lat1, Lon1, Lat2, Lon2: double;
|
||||
AUnits: TDistanceUnits = duKilometers): double;
|
||||
|
||||
function DMSToDeg(Deg, Min: Word; Sec: Double): Double;
|
||||
function GPSToDMS(Angle: Double): string;
|
||||
|
||||
|
||||
function LatToStr(ALatitude: Double; DMS: Boolean): String;
|
||||
function LonToStr(ALongitude: Double; DMS: Boolean): String;
|
||||
function TryStrToGps(const AValue: String; out ADeg: Double): Boolean;
|
||||
@ -1498,5 +1500,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Converts an angle given as degrees, minutes and seconds to a single
|
||||
floating point degrees value. }
|
||||
function DMSToDeg(Deg, Min: Word; Sec: Double): Double;
|
||||
begin
|
||||
Result := Deg + Min/60.0 + Sec/3600.0;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -16,7 +16,7 @@ unit mvGpsObj;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils,fgl,mvtypes,contnrs,syncobjs;
|
||||
Classes, SysUtils, Graphics, fgl, mvtypes, contnrs, syncobjs;
|
||||
|
||||
const
|
||||
NO_ELE = -10000000;
|
||||
@ -87,6 +87,9 @@ type
|
||||
private
|
||||
FDateTime: TDateTime;
|
||||
FPoints: TGPSPointList;
|
||||
FLineWidth: Double; // Line width in mm
|
||||
FLineColor: TColor;
|
||||
FVisible: Boolean;
|
||||
function GetDateTime: TDateTime;
|
||||
public
|
||||
constructor Create;
|
||||
@ -97,6 +100,9 @@ type
|
||||
|
||||
property Points: TGPSPointList read FPoints;
|
||||
property DateTime: TDateTime read GetDateTime write FDateTime;
|
||||
property LineColor: TColor read FLineColor write FLineColor;
|
||||
property Visible: Boolean read FVisible write FVisible;
|
||||
property LineWidth: Double read FLineWidth write FLineWidth;
|
||||
end;
|
||||
|
||||
TGPSObjList_ = specialize TFPGObjectList<TGPSObj>;
|
||||
@ -144,6 +150,7 @@ type
|
||||
|
||||
function Add(aItem: TGpsObj; AIdOwner: integer): integer;
|
||||
procedure DeleteById(const Ids: Array of integer);
|
||||
function FindTrackByID(const id: Integer): TGpsTrack;
|
||||
|
||||
procedure BeginUpdate;
|
||||
procedure EndUpdate;
|
||||
@ -645,6 +652,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGPSObjectList.FindTrackByID(const ID: Integer): TGpsTrack;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i:=0 to pred(FItems.Count) do
|
||||
if (ID = FItems[i].IdOwner) and (FItems[i] is TGpsTrack) then
|
||||
begin
|
||||
Result := TGpsTrack(FItems[i]);
|
||||
exit;
|
||||
end;
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
|
||||
{ TGPSTrack }
|
||||
|
||||
@ -662,6 +682,9 @@ constructor TGPSTrack.Create;
|
||||
begin
|
||||
inherited;
|
||||
FPoints := TGPSPointList.Create(true);
|
||||
FVisible := true;
|
||||
FLineColor := clDefault; // --> use MapView.DefaultTrackColor
|
||||
FLineWidth := -1; // --> use MapView.DefaultTrackWidth
|
||||
end;
|
||||
|
||||
destructor TGPSTrack.Destroy;
|
||||
|
@ -33,7 +33,9 @@ type
|
||||
procedure ReadTrackSegment(ANode: TDOMNode; ATrack: TGpsTrack);
|
||||
procedure ReadWayPoints(ANode: TDOMNode; AList: TGpsObjectList);
|
||||
public
|
||||
function LoadFromFile(AFileName: String; AList: TGpsObjectList): Integer;
|
||||
function LoadFromFile(AFileName: String; AList: TGpsObjectList; out ABounds: TRealArea): Integer;
|
||||
function LoadFromStream(AStream: TStream; AList: TGpsObjectList): Integer;
|
||||
function LoadFromStream(AStream: TStream; AList: TGpsObjectList; out ABounds: TRealArea): Integer;
|
||||
end;
|
||||
|
||||
@ -83,6 +85,7 @@ begin
|
||||
mn := 10*NUMBER[M[0]] + NUMBER[M[1]];
|
||||
sec := 10*NUMBER[S[0]] + NUMBER[S[1]];
|
||||
s1000 := 100*NUMBER[MS[0]] + 10*NUMBER[MS[1]] + NUMBER[MS[2]];
|
||||
if (s1000 < 0) or (s1000 > 1000) then s1000 := 0;
|
||||
end;
|
||||
Result := EncodeDate(yr, mon, dy) + EncodeTime(hr, mn, sec, s1000);
|
||||
end else
|
||||
@ -166,6 +169,13 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGpxReader.LoadFromFile(AFileName: String; AList: TGpsObjectList): Integer;
|
||||
var
|
||||
area: TRealArea;
|
||||
begin
|
||||
Result := LoadFromFile(AFileName, AList, area);
|
||||
end;
|
||||
|
||||
{ See LoadFromFile. }
|
||||
function TGpxReader.LoadFromStream(AStream: TStream; AList: TGpsObjectList;
|
||||
out ABounds: TRealArea): Integer;
|
||||
@ -190,6 +200,13 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGpxReader.LoadFromStream(AStream: TStream; AList: TGpsObjectList): Integer;
|
||||
var
|
||||
area: TRealArea;
|
||||
begin
|
||||
Result := LoadFromStream(AStream, AList, area);
|
||||
end;
|
||||
|
||||
procedure TGpxReader.ReadExtensions(ANode: TDOMNode; ATrack: TGpsTrack);
|
||||
var
|
||||
linenode: TDOMNode;
|
||||
|
@ -166,6 +166,13 @@ uses
|
||||
GraphType, Types,
|
||||
mvJobQueue, mvExtraData, mvDLEFpc, mvDE_IntfGraphics;
|
||||
|
||||
{ Converts a length given in millimeters to screen pixels }
|
||||
function mmToPx(AValue: Double): Integer;
|
||||
begin
|
||||
Result := round(AValue / 25.4 * ScreenInfo.PixelsPerInchX);
|
||||
end;
|
||||
|
||||
|
||||
type
|
||||
|
||||
{ TDrawObjJob }
|
||||
@ -575,18 +582,27 @@ var
|
||||
trkColor: TColor;
|
||||
trkWidth: Integer;
|
||||
begin
|
||||
if trk.Points.Count > 0 then
|
||||
if trk.Visible and (trk.Points.Count > 0) then
|
||||
begin
|
||||
trkColor := ColorToRGB(FDefaultTrackColor);
|
||||
trkWidth := FDefaultTrackWidth;
|
||||
if trk.ExtraData <> nil then
|
||||
// Determine track color
|
||||
if trk.LineColor = clDefault then
|
||||
begin
|
||||
if trk.ExtraData.InheritsFrom(TDrawingExtraData) then
|
||||
trkColor := ColorToRGB(FDefaultTrackColor);
|
||||
if (trk.ExtraData <> nil) and trk.ExtraData.InheritsFrom(TDrawingExtraData) then
|
||||
trkColor := TDrawingExtraData(trk.ExtraData).Color;
|
||||
if trk.ExtraData.InheritsFrom(TTrackExtraData) then
|
||||
trkWidth := round(ScreenInfo.PixelsPerInchX * TTrackExtraData(trk.ExtraData).Width / 25.4);
|
||||
end;
|
||||
end else
|
||||
trkColor := ColorToRGB(trk.LineColor);
|
||||
|
||||
// Determine track width
|
||||
if trk.LineWidth = -1 then
|
||||
begin
|
||||
trkWidth := FDefaultTrackWidth;
|
||||
if (trk.ExtraData <> nil) and trk.ExtraData.InheritsFrom(TTrackExtraData) then
|
||||
trkWidth := mmToPx(TTrackExtraData(trk.ExtraData).Width);
|
||||
end else
|
||||
trkWidth := mmToPx(trk.LineWidth);
|
||||
if trkWidth < 1 then trkWidth := 1;
|
||||
|
||||
LastInside := false;
|
||||
DrawingEngine.PenColor := trkColor;
|
||||
DrawingEngine.PenWidth := trkWidth;
|
||||
|
Reference in New Issue
Block a user