Einzelnen Beitrag anzeigen

Thom

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

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

  Alt 16. Apr 2012, 17:29
Du müßtest das Info-Fenster an den Marker "binden". Ab Delphi 2009 geht das sehr komfortabel über anonyme Methoden. Ansonsten könntest Du die Data-Eigenschaft des Markers nutzen und dort das InfoWindow-Objekt ablegen (vergleichbar mit TListItem.Data):
Delphi-Quellcode:
  Marker.Data:=InfoWindow;
  [...]
Die Anzeige im MarkerClick-Ereignis ist dann einfach:
Delphi-Quellcode:
 [...]
var
  Marker: TMarker;
  InfoWindow: TInfoWindow;
begin
  Marker:=Sender as TMarker;
  InfoWindow:=(Marker.Data) as TInfoWindow;
  if assigned(InfoWindow)
    then InfoWindow.Open(Marker.GetMap,Marker);
end;
Wobei ich bei diesem Tip etwas Bauchschmerzen habe, da ich noch nicht 100%ig weiß, ob das Data-Property noch in der kostenlosen Personal-Edition der nächsten Version vorkommen wird. Eigentlich sollen dort nur Objekte, Eigenschaften und Methoden enthalten sein, die auch im Google Maps API dokumentiert sind. Delphi "Komfort"-Funktionen (wozu auch die Data- und die Tag- Eigenschaft gehören) sollen eigentlich der Professional- und Enterprise-Edition vorbehalten sein. Da muß ich noch etwas darüber schlafen...

Ansonsten könntest Du natürlich auch ein Array mit allen Marker-InfoWindow-Paaren aufbauen und darüber die Zuordnung realisieren:
Delphi-Quellcode:
type
  TMarkerData = record
    Marker: TMarker;
    InfoWindow: TInfoWindow;
  end;

var
  MarkerData: array[0..x] of TMarkerData;
Desweiteren würde ich empfehlen, als Cast nur den as -Operator zu verwenden, da zukünftig Interfaces genutzt werden und damit die Umstellung schneller geht (IMarker(Sender) geht dann nämlich schief):
Delphi-Quellcode:
//bisher:
procedure TForm1.MarkerClick(Sender: TObject; Event: TEvent);
begin
  with Sender as TMarker do
  begin
  end;
end;

//zukünftig:
procedure TForm1.MarkerClick(Sender: IObject; Event: IEvent);
begin
  with Sender as IMarker do
  begin
  end;
end;
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat