Einzelnen Beitrag anzeigen

Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#202

AW: Google Maps über COM (Component Object Model)

  Alt 10. Mär 2012, 21:00
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.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat