Mir gelingt es nicht, eine Marker-Click-Routine zu setzen. Der Compiler meckert:
[DCC Fehler] GoogleMapUnit.pas(85): E2010 Inkompatible Typen: 'TProc<System.TObject,HTMLObjects.TEvent>' und 'Procedure of object'
Die Deklaration lautet:
Code:
uses ...
gmAPI, gmMap, gmBase, gmOverlaysMarker, gmEvents;
...
TGoogleMap = class(TObject)
private
procedure MarkerClick(Sender: TObject; Event: gmEvents.TEvent);
...
end;
Dann weise ich die Click-Prozedur wie folgt zu:
Code:
procedure TGoogleMap.CreateMarker(AWpt: TWpt);
var MarkerOptions : TMarkerOptions;
Marker : TMarker;
begin
with Script(WebBrowser) do begin
MarkerOptions := TMarkerOptions.Create;
with MarkerOptions do begin
Position := New(Google.Maps.LatLng(AWpt.Lat, AWpt.Lon));
Map := Maps[0];
Title := 'Test;
end;
Marker := New(Google.Maps.Marker(MarkerOptions));
Marker.OnClick := MarkerClick; // <<< Compiler-Error
MarkerOptions.Free;
end;
end;
procedure TGoogleMap.MarkerClick(Sender: TObject; Event: gmEvents.TEvent);
begin
with Script(WebBrowser) do begin
if Maps[0].GetZoom=8 then Maps[0].SetZoom(4) else Maps[0].SetZoom(8);
Maps[0].SetCenter(TMarker(Sender).GetPosition);
end;
end;
Woran kann das liegen? Ich habe doch die
Unit gmEvents.TEvent extra angegeben. Hm, ich bin ratlos.