LazMapViewer: Move sample projects to common folder "examples". New demo project "trackdemo".

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8079 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-08-20 13:05:28 +00:00
parent b10c38f5d7
commit 9448894c7c
25 changed files with 30480 additions and 29 deletions

View File

@ -18,7 +18,7 @@ object MainForm: TMainForm
Top = 0
Width = 608
Align = alClient
CachePath = '../../../../example_cache/'
CachePath = '../../../../cache/'
DefaultTrackColor = clBlue
DefaultTrackWidth = 3
DownloadEngine = MapView.BuiltInDLE

View File

@ -132,7 +132,7 @@ type
const
MAX_LOCATIONS_HISTORY = 50;
HOMEDIR = '../../../'; // share the cache in both example projects
HOMEDIR = '../../../../'; // share the cache in both example projects
MAP_PROVIDER_FILENAME = 'map-providers.xml';
USE_DMS = true;
@ -338,8 +338,8 @@ begin
POIImage.PixelFormat := pf32bit;
POIImage.LoadFromFile('../../mapmarker.png');
ForceDirectories(HOMEDIR + 'example_cache/');
MapView.CachePath := HOMEDIR + 'example_cache/';
ForceDirectories(HOMEDIR + 'cache/');
MapView.CachePath := HOMEDIR + 'cache/';
MapView.GetMapProviders(CbProviders.Items);
CbProviders.ItemIndex := CbProviders.Items.Indexof(MapView.MapProvider);
MapView.DoubleBuffered := true;

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -10,7 +10,7 @@ object MainForm: TMainForm
OnDestroy = FormDestroy
OnShow = FormShow
ShowHint = True
LCLVersion = '2.1.0.0'
LCLVersion = '2.3.0.0'
object MapView: TMapView
Left = 0
Height = 640
@ -25,7 +25,6 @@ object MainForm: TMainForm
Font.Color = clBlack
MapProvider = 'OpenStreetMap Mapnik'
UseThreads = True
Zoom = 0
OnZoomChange = MapViewZoomChange
OnChange = MapViewChange
OnMouseLeave = MapViewMouseLeave
@ -75,7 +74,6 @@ object MainForm: TMainForm
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'Zoom:'
ParentColor = False
end
object CbMouseCoords: TGroupBox
AnchorSideLeft.Control = PgData
@ -106,7 +104,6 @@ object MainForm: TMainForm
BorderSpacing.Left = 8
BorderSpacing.Top = 4
Caption = 'Longitude'
ParentColor = False
end
object LblPositionLatitude: TLabel
AnchorSideLeft.Control = CbMouseCoords
@ -120,7 +117,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Bottom = 8
Caption = 'Latitude'
ParentColor = False
end
object InfoPositionLongitude: TLabel
AnchorSideLeft.Control = CbMouseCoords
@ -136,7 +132,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Right = 16
Caption = 'Label2'
ParentColor = False
end
object InfoPositionLatitude: TLabel
AnchorSideLeft.Control = CbMouseCoords
@ -154,7 +149,6 @@ object MainForm: TMainForm
BorderSpacing.Right = 16
BorderSpacing.Bottom = 8
Caption = 'Label2'
ParentColor = False
end
end
object GbCenterCoords: TGroupBox
@ -184,7 +178,6 @@ object MainForm: TMainForm
BorderSpacing.Left = 8
BorderSpacing.Top = 4
Caption = 'Longitude'
ParentColor = False
end
object LblCenterLatitude: TLabel
AnchorSideLeft.Control = GbCenterCoords
@ -198,7 +191,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Bottom = 8
Caption = 'Latitude'
ParentColor = False
end
object InfoCenterLongitude: TLabel
AnchorSideLeft.Control = GbCenterCoords
@ -214,7 +206,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Right = 16
Caption = 'Label2'
ParentColor = False
end
object InfoCenterLatitude: TLabel
AnchorSideLeft.Control = GbCenterCoords
@ -232,7 +223,6 @@ object MainForm: TMainForm
BorderSpacing.Right = 16
BorderSpacing.Bottom = 8
Caption = 'Label2'
ParentColor = False
end
end
object GbScreenSize: TGroupBox
@ -262,7 +252,6 @@ object MainForm: TMainForm
BorderSpacing.Left = 8
BorderSpacing.Top = 4
Caption = 'Width'
ParentColor = False
end
object LblViewportHeight: TLabel
AnchorSideLeft.Control = GbScreenSize
@ -276,7 +265,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Bottom = 8
Caption = 'Height'
ParentColor = False
end
object InfoViewportWidth: TLabel
AnchorSideTop.Control = GbScreenSize
@ -291,7 +279,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 4
BorderSpacing.Right = 16
Caption = 'Label2'
ParentColor = False
end
object InfoViewportHeight: TLabel
AnchorSideTop.Control = InfoViewportWidth
@ -308,7 +295,6 @@ object MainForm: TMainForm
BorderSpacing.Right = 16
BorderSpacing.Bottom = 8
Caption = 'Label2'
ParentColor = False
end
end
object CbDistanceUnits: TComboBox
@ -396,7 +382,6 @@ object MainForm: TMainForm
Width = 177
BorderSpacing.Top = 8
Caption = 'Select one of the found locations:'
ParentColor = False
end
object BtnGoTo: TButton
AnchorSideTop.Control = CbFoundLocations
@ -482,7 +467,6 @@ object MainForm: TMainForm
BorderSpacing.Left = 8
BorderSpacing.Top = 4
Caption = 'Click with right mouse button to add a GPS point.'
ParentColor = False
WordWrap = True
end
object GPSPointInfo: TLabel
@ -502,7 +486,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 16
BorderSpacing.Right = 6
Caption = 'GPSPointInfo'
ParentColor = False
WordWrap = True
end
end
@ -548,7 +531,6 @@ object MainForm: TMainForm
Width = 86
BorderSpacing.Top = 6
Caption = 'Drawing engine:'
ParentColor = False
end
object CbDrawingEngine: TComboBox
AnchorSideLeft.Control = PgConfig
@ -587,7 +569,6 @@ object MainForm: TMainForm
BorderSpacing.Top = 8
Caption = 'Providers:'
FocusControl = CbProviders
ParentColor = False
end
object CbProviders: TComboBox
AnchorSideLeft.Control = PgConfig
@ -809,7 +790,6 @@ object MainForm: TMainForm
Width = 39
BorderSpacing.Left = 8
Caption = 'Backgr.'
ParentColor = False
end
object Bevel1: TBevel
AnchorSideLeft.Control = CbDrawingEngine

View File

@ -137,7 +137,7 @@ type
const
MAX_LOCATIONS_HISTORY = 50;
HOMEDIR = '../../../'; // share the cache in both example projects
HOMEDIR = '../../../../../'; // share the cache in both fulldemo projects
MAP_PROVIDER_FILENAME = 'map-providers.xml';
USE_DMS = true;
@ -358,8 +358,8 @@ begin
POIImage.PixelFormat := pf32bit;
POIImage.LoadFromFile('../../mapmarker.png');
ForceDirectories(HOMEDIR + 'example_cache/');
MapView.CachePath := HOMEDIR + 'example_cache/';
ForceDirectories(HOMEDIR + 'cache/');
MapView.CachePath := HOMEDIR + 'cache/';
MapView.GetMapProviders(CbProviders.Items);
CbProviders.ItemIndex := CbProviders.Items.Indexof(MapView.MapProvider);
MapView.DoubleBuffered := true;

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because it is too large Load Diff

View 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
84
84
84
87
)
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 = 152
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

View File

@ -0,0 +1,206 @@
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;
function DMSToDeg(Deg, Min: Word; Sec: Double): Double;
begin
Result := Deg + Min/60 + Sec/3600;
end;
{ 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;
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;
begin
reader := TGpxReader.Create;
try
reader.LoadFromFile(GPX_FILE_NAME, MapView.GPSItems, b);
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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<PathDelim Value="\"/>
<General>
<Flags>
<CompatibilityMode Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<Title Value="track_demo"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="lazMapViewerPkg"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="track_demo.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="MainForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\trackdemo"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,25 @@
program track_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.

View File

@ -577,7 +577,7 @@ var
begin
if trk.Points.Count > 0 then
begin
trkColor := FDefaultTrackColor;
trkColor := ColorToRGB(FDefaultTrackColor);
trkWidth := FDefaultTrackWidth;
if trk.ExtraData <> nil then
begin