From 53fc9b1dc371cc27488cd16173a8b5a75b3a3905 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 8 Jan 2025 11:40:46 +0000 Subject: [PATCH] Sample project for various POI marker settings. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9570 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../point_of_interest_markers/project1.lpi | 87 ++++++++++++ .../point_of_interest_markers/project1.lpr | 28 ++++ .../point_of_interest_markers/unit1.lfm | 125 ++++++++++++++++++ .../point_of_interest_markers/unit1.pas | 69 ++++++++++ 4 files changed, 309 insertions(+) create mode 100644 components/lazmapviewer/examples/point_of_interest_markers/project1.lpi create mode 100644 components/lazmapviewer/examples/point_of_interest_markers/project1.lpr create mode 100644 components/lazmapviewer/examples/point_of_interest_markers/unit1.lfm create mode 100644 components/lazmapviewer/examples/point_of_interest_markers/unit1.pas diff --git a/components/lazmapviewer/examples/point_of_interest_markers/project1.lpi b/components/lazmapviewer/examples/point_of_interest_markers/project1.lpi new file mode 100644 index 000000000..e661950a2 --- /dev/null +++ b/components/lazmapviewer/examples/point_of_interest_markers/project1.lpi @@ -0,0 +1,87 @@ + + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + <SharedMatrixOptions Count="1"> + <Item1 ID="966991393514" Modes="Default" Value="-gw3"/> + </SharedMatrixOptions> + </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="project1.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + <Unit> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="project1"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + </Debugging> + <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> diff --git a/components/lazmapviewer/examples/point_of_interest_markers/project1.lpr b/components/lazmapviewer/examples/point_of_interest_markers/project1.lpr new file mode 100644 index 000000000..f60f63fa2 --- /dev/null +++ b/components/lazmapviewer/examples/point_of_interest_markers/project1.lpr @@ -0,0 +1,28 @@ +program project1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + {$IFDEF HASAMIGA} + athreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, Unit1 + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Scaled := True; + {$PUSH}{$WARN 5044 OFF} + Application.MainFormOnTaskbar := True; + {$POP} + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/components/lazmapviewer/examples/point_of_interest_markers/unit1.lfm b/components/lazmapviewer/examples/point_of_interest_markers/unit1.lfm new file mode 100644 index 000000000..ed172d203 --- /dev/null +++ b/components/lazmapviewer/examples/point_of_interest_markers/unit1.lfm @@ -0,0 +1,125 @@ +object Form1: TForm1 + Left = 1129 + Height = 431 + Top = 356 + Width = 865 + Caption = 'Form1' + ClientHeight = 431 + ClientWidth = 865 + LCLVersion = '4.99.0.0' + OnCreate = FormCreate + object MapView1: TMapView + Left = 0 + Height = 431 + Top = 0 + Width = 865 + Active = True + Align = alClient + Cyclic = True + DownloadEngine = MapView1.BuiltInDLE + DrawingEngine = MapView1.BuiltInDE + Options = [mvoEditorEnabled, mvoMouseDragging, mvoMouseZooming] + Layers = <> + Font.Color = clBlack + MapProvider = 'Open Topo Map' + PluginManager = MvPluginManager1 + POIImages = ImageList1 + end + object ImageList1: TImageList + Height = 40 + Width = 40 + Left = 320 + Top = 88 + Bitmap = { + 4C7A040000002800000028000000A20900000000000078DAED5C5B6C1C571936 + 0F3C4105423C202E5285845A1E100884845025E001EDECCD76EDA64A1A25B148 + D2A6108942295242432328CDCCDEECC48A1BC798C672EB568D4348540A492512 + 7AF1CEEE6CBCD84E1CD74E5CDA9034290EDE78BD179BC4C3FFCD7AD2E9B23B3B + B373D95134473ADAD9B99CF9F6BF7CFF7FFE993D4D4D6E935B22121C8AEF613A + 9C8A6DBCFF912C7D2E390DA3D0793F9B3EB031BF7CED9C98BDF0BAE8348C8970 + 40C2B6927947EA4EC3588ECF691813D1E6A17FF46E5C712AC664347872B4FB41 + D18918E9BEDF4F75B666572EBC2A9EFDFD66C76114A2CD33737FEF1681CF6918 + 85680B3BD1D75190B1390923EE91EABA3FB73C79542CC7D7688C3CE77D8C3865 + 299B1AA8884D0D23B6D30736E5116FCCC695EE6CFDB4100D9E48EF5F9B2F8CBD + A48A0D1DB24DED5B23612C5C4A19C246F2BE9B0FFB0785CED6B938EB11C1B989 + 68F005EC5F3DBE9B8EE7670F3F51D482EBBD63BB0A7CC8574844FC4342ACE5D9 + 64B4E5DF1813B15037BF72DE56A1B32DF3DE6BFB96F13BA1077C5E79BDEFBF7C + 247893C65D987CEEE19C169965E207615FCBC025FF36A3769E8C048BB05BA51D + 2BED39196D5EB9F257B62636C88CB05D03279AC7FD2D2F9D7FF1F162256C7A30 + 021BFDCE29D8A8E93CD6D53E3C736457BE5E8CE067F0B415D88C62842F24C2FE + 6232E4FB86E5F1402BC6D8871867877F59441CB12D6611C6E9E12717B560BCFC + E7A7C5047188957AAD8CB14D1B46D2752212E01B32A7D8DB767866F8C99ABA26 + 6E2C9AC173BA7987EC5D88B566498E05358CC4E937C15176638BB3CC8578C8F3 + 4DC8514DD79021D9C36C23B095F975AE1A46C46B5BB0B1FEEF966353DA632539 + 66264F90FCDA476DC2F67E256C4ABF2E97E3C5E3BF5BE02381DFDA818D6799FB + B4F8B52C47C88E72B0AB56F29F1E6C4A8CE7871ECFF3E140C1CC5CC50C6CB7AF + 8DB5BC68E51CC20836BB7CC1C576E760E339DF0F9D8DCD93712236698EC67A4E + 2558C6D3E436B795D73C58CF4F8568F00CF57F228F42C736F6E158237267C454 + 9A57C453B1E6ECECF38F16E65E7D4A5C38C589B75207A48E6DECC3319C8373AD + 8CC31FF1F5B07FBF100964AE1DDBB12CE3A9D5716E92AEA17970B755B89023D1 + 5C313E7970436629DE2D6AC526775C73AE6FC37C22EC7BCB921A07D9D3CCC096 + 825E5CE57DFAB9CD3921163C636ADC8B047B27FB36668D6293FB64DF862CC634 + CB1760E3F5E8544DD789907FC90C9F81EF5D3DB6E396DAFDAE1EDF298E3DBB5E + 94F905DBD8A7EA33C777DC247FE18DF21BD9CA0D35398CF53C244EBDBC53BCF1 + EE9828376C9F1D7C4C3AA626778C6D841FE321E667C4618BD5C6C7FD3F183F29 + 566B97DE1894CEA976FD451A1BF730E0B3A3E0D94A635FFEE32F24B9D56A9063 + 355D636CDCA35E7CE417EF28E3C247644736A6D469B58673706EA5313036EE61 + 20EFAAAA1B1CD3DA6A8D73A7E2A378969B7FED6943FABDFEF65B55F58BB1718F + BAFD23D69CAE860F363FF5F2AF0CF907C6C63DEA7FF611EC839FAAF1CB15E168 + DDFC82B1710F03FCDC417177A1163F4346F5F033C6365203411E04FBAD157BEB + 896F1813E71ACDB528AF4C55E368231DF829BE9D32217FE918EF59B76836BEF1 + 9EB55933EA5BAB79733EFF46CC346C180B639A983BB3D3035B96CCC287B130A6 + C9738F821939EAAAEC4C7FE6457EB267FAD066E3F38F435B0AC968E0192BE66F + 3CD94CB57C464B2FC5336FCEAA7A793CECFBF944CFDA1BF5FBECBA058C61690D + 33E27FBB1E3E04DFE15A5B6A1B615F518FAF48F335BAC68E67E852DE15F6F79C + EFDB94D73EDFDD944B86FDFBEDAA0F95F8C67F95F47CAB66EDE5F8CE5BF47BA6 + ED7E860E5D81C7D4E28ACC7576E9B5822DEE4E77B7E7AAE1C331BC2BD6C81AA5 + 100E9CA079ECFFF1F6C5C16DB9041D6B740D157645B6FF8132DFC336F9EBFB76 + DB9C9A2D0AD14006B1051DDB8DB239B53C9164B62C75CEDBEAC47A39C5FDADE8 + EE93039D73288E792A1109CCC8F323699BF635DA3F6073C46F8B94D32D953F5F + C03ECAA5161BF85E78076AB46AF9208EADD6713BECD629E4A625572D61F42EDA + A96BC4B5D9171E2DEAC8E921C3DDB6C534B27F3D79BEC4D9748D6DF253A9E759 + 51E7BBD3F0395EBF64EB7AEA0938D74EFF28E5F7CEE517BDFCDCA87CA68491E2 + DB4085F836508A6F8DCEB5A4FC806C8BE668B7EBA7D236E6260EC99F65CEB1FB + 7D53179F8BCFC5E7E273F1B9F85C7C2E3E179F8BCFC5E7E273F1D55193E97A20 + 7D2D3124A263DB71F2C37BBEFB1E2CA0DBF52E7B3D3274A2EC943274AAECEE84 + 26D5FDF17F91AEF6B45CABC1BA164267DBE146CB5D7A96130EE4A78FEC5AC2FF + 46652EC23A19F079F85532D62AD45B53A2DFDD2F8AE2C7EAC596DAFB40B6DA1A + 19727FF7E4DE82106BD1BD8EC3C81E0F130F31FBEAC536DAF3D0F5F27568D430 + 428EFA6203131342BE7566619B4B1F15C7FBB7CEC3FE26FEB02D8BEFCAE37A39 + 14FFDD4BB16B3E6516B644C89F93EBAAF8C47725C6520C6A1BD6647791C07D71 + 8EE9334BA7A33DEB33E5B201C689FE6D59A5CFC0AF35DD8BF3748F709EEDBA38 + 9AF456CD17AAE50ECAFC424F8E41B2FBCB9B5CF3E775F93AD6478A048AB3AFB0 + 457089BCE64E35DB2A979F567CC908F36DF28D649D7E7BF708EBE9423C86AE64 + 3E2E75EF0DE2AB16191B4FF6A7E4C4D29A04B5E338CF31CF50DF6145AE28C991 + 3EB16661B9FFCE1CF9F59296F78E089B207435DF63652E5B714D1192672D8E16 + 38E61ED2CF94D5B9B6B2C3DF1167B43CD321D9FD38C1F99EB0025FA5F50AF11D + 9CA4F55D05F805FCC3AA3C56E90F7AB1916D7E917470C9AA5C067E3DFBCA9E62 + 3DD84AB2F36E258CBFB10A5FAABBFD5EE2C715F8825E6CABF6FB379EF3FFC00A + 6C535CF35D643BE7C01F1217EAC436D5FFA3BB7896396B55FE4CD81694B150B7 + EF73CC26BAEE90E93617F37C86EC6EDE303771CC31EACDA6DA5BEFBACF922EAF + 1B1D07F93BC9FF9499D89221DFE7884B4D796F5C8AD5ACE7A8793A0D7C016B66 + 981677688E11E7BCEB4D915BB4E54B84ED5F26F3E6BC19EF0C089DFE2F930DBF + 692AB690F77BE4B7A78D8EC387025F1961998BA6E7149C2732C279B78337498E + B7E7F7D236718E263F8D04EFA56BA6ADE04E9EF54E929F9D253C7F52F2E66ACD + E73470AAE93ECEF9BF4AD8CE5B92EFB081AF932DE7D5620DDE6701C6CA76EBFB + 1A611B6EB2A8513E304CFA9DD030A7385DFE1B56D7631BB7B476C331D7132CF3 + 8896B9A3528658EBAC9A4CCDCEB7CFED5FF349ADE7E2F34CA4F55BB47DA6C986 + 26CDA77A1FFEB8D673C9C7BFC38718DBFE3B41F6F39F04E7DFAC25FE919D4ED3 + F9715B6B872C3348BDE6FB973C27F16243D6BBA4FBCE91DE4E56971DF33C9D93 + 6D54FD75F5BFD273E48F9779D6F793B1F0864F2017279D6E279D5E868F3BE17D + 3ECA5F0E2207FFB056C22C505CE96D725BC5F63F5C7AC9AD + } + end + object MvPluginManager1: TMvPluginManager + Left = 321 + Top = 157 + object MvPluginManager1LegalNoticePlugin1: TLegalNoticePlugin + LegalNotice = 'Icons by [https://icons8.com icons8.com]' + Position = lnpBottomLeft + end + object MvPluginManager1LegalNoticePlugin2: TLegalNoticePlugin + LegalNotice = '[https://openstreetmap.org/copyright OpenStreetMap and contributors]' + end + end +end diff --git a/components/lazmapviewer/examples/point_of_interest_markers/unit1.pas b/components/lazmapviewer/examples/point_of_interest_markers/unit1.pas new file mode 100644 index 000000000..ea96d0959 --- /dev/null +++ b/components/lazmapviewer/examples/point_of_interest_markers/unit1.pas @@ -0,0 +1,69 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, mvMapViewer, mvPluginCore, mvPlugins, SysUtils, Forms, Controls, + Graphics, Dialogs, mvTypes; + +type + TForm1 = class(TForm) + ImageList1: TImageList; + MapView1: TMapView; + MvPluginManager1: TMvPluginManager; + MvPluginManager1LegalNoticePlugin1: TLegalNoticePlugin; + MvPluginManager1LegalNoticePlugin2: TLegalNoticePlugin; + procedure FormCreate(Sender: TObject); + private + + public + + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +procedure TForm1.FormCreate(Sender: TObject); +var + L: TMapLayer; + P: TMapPointOfInterest; +begin + L := MapView1.Layers.Add as TMapLayer; + + P := L.PointsOfInterest.Add as TMapPointOfInterest; + // or: P := TMapPointOfInterest.Create(L.PointsOfInterest); + P.RealPoint := RealPoint(68, 111); + P.ImageIndex := 0; + P.ImageAnchorX := 0.0; + P.ImageAnchorY := 1.0; + P.TextPositionHor := tphLeft; + P.Caption := 'Tilted Pin'; + + P := L.PointsOfInterest.Add as TMapPointOfInterest; + P.RealPoint := RealPoint(19, -45); + P.ImageIndex := 2; + P.Caption := 'Vertical Pin'; + + P := L.PointsOfInterest.Add as TMapPointOfInterest; + P.RealPoint := RealPoint(0.0, 0.0); + P.ImageIndex := 1; + P.Caption := 'Location'; + + P := L.PointsOfInterest.Add as TMapPointOfInterest; + P.RealPoint := RealPoint(0.0, -120.0); + P.ImageIndex := 3; + P.ImageAnchorX := 0.2; + P.ImageAnchorY := 0; + P.TextPositionHor := tphLeft; + P.TextPositionVert := tpvAbove; + P.Caption := 'Safety Pin'; +end; + +end. +