LazMapViewer: Add distance measurement between user-provided points (https://forum.lazarus.freepascal.org/index.php/topic,12674.msg319269.html, patch by sstvmaster).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6879 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2019-04-28 11:28:55 +00:00
parent 203c7aab05
commit e9fb70d301
6 changed files with 121 additions and 15 deletions

View File

@ -99,7 +99,7 @@ implementation
uses
LCLType, IniFiles, Math, FPCanvas, FPImage, IntfGraphics,
mvEngine, mvExtraData,
gpslistform;
globals, gpslistform;
type
TLocationParam = class
@ -241,6 +241,7 @@ end;
procedure TMainForm.CbDistanceUnitsChange(Sender: TObject);
begin
DistanceUnit := TDistanceUnits(CbDistanceUnits.ItemIndex);
UpdateViewPortSize;
end;
@ -414,6 +415,7 @@ var
i: Integer;
s: String;
pt: TRealPoint;
du: TDistanceUnits;
begin
ini := TMemIniFile.Create(CalcIniName);
try
@ -435,6 +437,16 @@ begin
pt.Lat := StrToFloatDef(ini.ReadString('MapView', 'Center.Latitude', ''), 0.0, PointFormatSettings);
MapView.Center := pt;
s := ini.ReadString('MapView', 'DistanceUnits', '');
if s <> '' then begin
for du in TDistanceUnits do
if DistanceUnit_Names[du] = s then begin
DistanceUnit := du;
CbDistanceUnits.ItemIndex := ord(du);
break;
end;
end;
List := TStringList.Create;
try
ini.ReadSection('Locations', List);
@ -518,9 +530,9 @@ begin
MapView.GetVisibleArea.TopLeft.Lon,
MapView.GetVisibleArea.TopLeft.Lat,
MapView.GetVisibleArea.BottomRight.Lon,
TDistanceUnits(cbDistanceUnits.ItemIndex)
DistanceUnit
),
cbDistanceUnits.Items[cbDistanceUnits.ItemIndex]
DistanceUnit_Names[DistanceUnit]
]);
InfoViewportHeight.Caption := Format('%.2n %s', [
CalcGeoDistance(
@ -528,9 +540,9 @@ begin
MapView.GetVisibleArea.TopLeft.Lon,
MapView.GetVisibleArea.BottomRight.Lat,
MapView.GetVisibleArea.TopLeft.Lon,
TDistanceUnits(cbDistanceUnits.ItemIndex)
DistanceUnit
),
cbDistanceUnits.Items[cbDistanceUnits.ItemIndex]
DistanceUnit_Names[DistanceUnit]
]);
end;
@ -552,6 +564,8 @@ begin
ini.WriteString('MapView', 'Center.Longitude', FloatToStr(MapView.Center.Lon, PointFormatSettings));
ini.WriteString('MapView', 'Center.Latitude', FloatToStr(MapView.Center.Lat, PointFormatSettings));
ini.WriteString('MapView', 'DistanceUnits', DistanceUnit_Names[DistanceUnit]);
ini.EraseSection('Locations');
for i := 0 to CbLocations.Items.Count-1 do
ini.WriteString('Locations', 'Item'+IntToStr(i), CbLocations.Items[i]);