Einzelnen Beitrag anzeigen

Thom

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

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

  Alt 28. Jun 2011, 21:22
Ich staune auch immer wieder, was da alles drin ist...

Noch ein kleiner Tip: Wenn Du das Overlay öfters aus- und wieder einblendest, wäre es eventuell sinnvoll, das Abräumen der Delphi-Wrapper für die DIV-Elemente von der Destroy- in die OnRemove-Methode zu verlegen:
Delphi-Quellcode:
destructor TUSGSOverlay.Destroy;
begin
  //FDivNode.Free; <- hier und
  //FImageNode.Free; <- hier weg
  inherited;
end;

procedure TUSGSOverlay.OnRemove;
begin
  Variant(DivNode.ParentNode).RemoveChild(DivNode.Disp);
  FDivNode.Free; //<- und dafür hier
  FImageNode.Free; //<- und hier hin
end;
Machst Du das nicht, produzierst Du zwar dank der Aufräum-Automatik des Frameworks keine Speicherlecks - dafür packst Du Dir aber den Hauptspeicher unnötig voll.

OK. Veränderte Demo SimpleOverlay:
Delphi-Quellcode:
  TForm1 = class(TForm)
    //...
  private
    FMap: TMap; //<- neu
    FOverlay: TOverlayView; //<- neu
    //...
  public
    //...
    property Map: TMap read FMap write FMap; //<- neu
    property Overlay: TOverlayView read FOverlay write FOverlay; //<- neu
  end;

procedure TForm1.FormShow(Sender: TObject);
var
  //Map: TMap; <- hier entfernen
  //...
begin
  //...
  Overlay:=TUSGSOverlay.Create(Bounds,SrcImage,Map); //<-Overlay in Variable speichern
end;

procedure TForm1.Button1Click(...)
begin
  Overlay.SetMap(TMap(nil)); //<- Overlay von der Karte entfernen -> OnRemove wird aufgerufen
  Overlay.SetMap(Map); //<- Overlay wieder einblenden -> OnAdd und Draw werden aufgerufen
end;
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (28. Jun 2011 um 21:43 Uhr)
  Mit Zitat antworten Zitat