Hallo DelphiFan2008,
die Lineale sehen ja super aus!
Ja, die Breite und Höhe der angezeigten Karte läßt sich auch mit Hilfe des Google Maps
API's berechnen. Dazu muß lediglich die Geometrie-Bibliothek eingebunden werden:
Delphi-Quellcode:
LoadAPI(InitMap,[libGeometry]);
//oder
LoadAPIAsync(InitMap,[libGeometry]);
Die Berechnung selbst erfolgt dann über die Funktion
ComputeDistanceBetween des
Spherical-Objektes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Width, Height: Double;
NorthWest: {$IFDEF USE_INTERFACES}ILatLng{$ELSE}TLatLng{$ENDIF};
begin
with Script do
begin
with Maps[0].Bounds do
begin
NorthWest:=New(Google.Maps.LatLng(NorthEast.Lat,SouthWest.Lng));
Width:=Google.Maps.Geometry.Spherical.ComputeDistanceBetween(NorthWest,NorthEast);
Height:=Google.Maps.Geometry.Spherical.ComputeDistanceBetween(NorthWest,SouthWest);
end;
end;
ShowMessage(Format('Width: %f km, Height: %f km',[Width/1000,Height/1000]));
end;
Code:
NW---------NE
| |
| |
| |
| |
| |
SW---------*
NW - NorthWest
NE - NorthEast
SW - SouthWest
Bei dieser Gelegenheit möchte ich einmal einen kleinen Ausblick auf die kommende Version des Frameworks geben:
Eine wichtige Erweiterung - neben vielen anderen Neuerungen - wird die Verwendung von Interfaces sein (siehe obiges Beispiel), so daß eine compilerunterstützte, automatische Freigabe nicht mehr benötigter Objekte zur Verfügung stehen wird. Bisher sollte (mußte aber nicht) das Objekt
NorthWest im eigenen Quelltext freigegeben werden. Das wird nach der Umstellung auf Interfaces nicht mehr notwendig sein.