AW: Google Maps über COM (Component Object Model)
Hey Thom
Hätte noch ne kleine Frage zu den Overlays ;-) Ist es möglich ein Overlay wieder zu löschen oder zu verschieben? Hab darüber leider nichts gefunden :-( Schöne Grüße Christoph |
AW: Google Maps über COM (Component Object Model)
Hallo Christoph,
Ja, das geht - wenn auch wieder nur über die Trickkiste. :lol: Leider bietet (T)OverlayView keine Methode oder Eigenschaft, um die Größe oder Position des Overlays zu beeinflussen. Schaut man sich allerdings TUSGSOverlay aus der Demo SimpleOverlay an, kann man feststellen, daß in der Methode OnAdd ein DIV-Container erstellt wird, der das Overlay-Bild aufnimmt und dessen Größe und Position in der Methode Draw an die gewünschten Koordinaten angepaßt wird. Die erste Möglichkeit besteht also darin, den DIV-Container einfach auf der Karte an die gewünschte Stelle zu verschieben. Bei der zweiten Möglichkeit wird das Overlay mit
Delphi-Quellcode:
von der Karte entfernt, worauf die Methode OnRemove aufgerufen wird. Anschließend wird das Overlay einfach wieder der Karte zugeordnet
Overlay.SetMap(TMap(nil));
//...
Delphi-Quellcode:
, worauf wieder OnAdd und Draw durchlaufen werden und damit die Möglichkeit besteht, das Overlay an einer anderen Stelle zu positionieren.
Overlay.SetMap(Map);
//... |
AW: Google Maps über COM (Component Object Model)
Hey Thom
Super deine Trickkiste!!!! Habs aber irgendwie nicht hinbekommen. :-(
Delphi-Quellcode:
geht gar nicht weil er das nicht kennt
Overlay.SetMap(Map);
Delphi-Quellcode:
bringt folgenden error:
Overlay.SetMap(Map);
[Error] Unit1.pas(366): This form of method call only allowed for class methods Könntest du vielleicht nen kurzes beispiel schreiben auch mit dem DIV-Container? Nur wenns nicht zuviel aufwand ist ;-) Vielen Dank Christoph |
AW: Google Maps über COM (Component Object Model)
Ich staune auch immer wieder, was da alles drin ist... :lol:
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:
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.
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; 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; |
AW: Google Maps über COM (Component Object Model)
Hey Thom
Vielen dank aber es gibt immernoch Fehler aber ich suche morgen nochmal :-) Christoph |
AW: Google Maps über COM (Component Object Model)
Wenn's morgen nicht klappt: Ich kann auch noch mal meine veränderte Demo SimpleOverlay posten, wenn es Dir hilft. An der hatte ich das Ein- und Ausblenden des Overlays gerade getestet.
|
AW: Google Maps über COM (Component Object Model)
Das wär super, hab wahrscheinlich irgendwas vergessen ;-)
Danke Christoph |
AW: Google Maps über COM (Component Object Model)
Liste der Anhänge anzeigen (Anzahl: 2)
Ok. Da ist sie.
Ist nicht schön: Einfach nur ein Button über die Karte geklebt - demonstriert aber das Aus- und Einblenden eines Overlays...:lol: Anhang 34504 Ich habe die Demo doch noch etwas "schöner" gemacht: Jetzt ist der Button zum Aus- und Einblenden des Overlays an der richtigen Stelle und über zwei Schieberegler können sogar Opazität und horizontale Verschiebung der Overlays beeinflußt werden. 8-) |
AW: Google Maps über COM (Component Object Model)
Hey Thom
Jetzt gehts! Super! Christoph |
AW: Google Maps über COM (Component Object Model)
Prima - meistens hilf es wirklich, mal eine Nacht über ein Problem zu schlafen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz