Einzelnen Beitrag anzeigen

Thom

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

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

  Alt 20. Jun 2013, 18:23
Hallo Michael,

ist angekommen und auch schon angeschaut.

Das Problem liegt bei der VCL bzw. dem TWebBrowser: Solange dieser nicht sichtbar ist, hat er eine Größe von 0x0 (oder 1x1) Pixeln. Damit liegt das Kartenzentrum (in Deinem Fall (0,0)) in der linken oberen Ecke.
Mein Vorschlag wäre, nur die Karte zu laden, die am Anfang sichtbar ist und alle anderen erst dann, wenn die entsprechende Seite angeklickt wird:
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
  procedure InitMap(WebBrowser: TWebBrowser);
  begin
    if Script(WebBrowser)=nil then
      with TScript.Create(WebBrowser) do
        LoadAPIAsync(Self.InitMap);
  end;
begin
  if PageControl1.ActivePage=TabSheet1 then InitMap(WebBrowser_T1);
  if PageControl1.ActivePage=TabSheet2 then InitMap(WebBrowser_T2); //bzw. Tracker2, da Du das umbenannt hattest
  if PageControl1.ActivePage=TabSheet3 then InitMap(WebBrowser_T3);
  if PageControl1.ActivePage=TabSheet4 then InitMap(WebBrowser_T4);
  if PageControl1.ActivePage=TabSheet5 then InitMap(WebBrowser_T5);
end;
Das würde auch die Startzeit des Programmes spürbar verkürzen, da jetzt nicht mehr alle Karten im OnShow-Ereignis geladen werden müssen.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (20. Jun 2013 um 22:28 Uhr)
  Mit Zitat antworten Zitat