Ich habe mal eine kurze Frage:
Wie kann ich mehrere Maps in einer Anwendung verwenden.
Im Moment habe ich das so probiert:
Code:
type
TForm1 = class(TForm)
...
WebBrowser1: TWebBrowser;
WebBrowser2: TWebBrowser;
...
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
MapScript1: TScript;
MapScript2: TScript;
procedure InitMap(Sender: TObject);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
// Einmalig die Maps initialisieren
if MapScript1=nil then
TScript.Create(WebBrowser1).LoadAPIAsync(InitMap);
if MapScript2=nil then
TScript.Create(WebBrowser2).LoadAPIAsync(InitMap);
end;
procedure TForm1.InitMap(Sender: TObject);
var
MapOptions: TMapOptions;
MarkerOptions: TMarkerOptions;
begin
with TScript(Sender) do
begin
MapOptions:=TMapOptions.Create;
with MapOptions do
begin
DisableDefaultUI:=true; //alle Kontrollelemente ausschalten
DisableDoubleClickZoom:=true; //kein Zoom per Doppelklick
Draggable:=false; //Karte nicht verschiebbar
ScrollWheel:=false; //kein Zoom über Mausrad
KeyboardShortcuts:=false; //keine Tastenkürzel
MapTypeID:=Google.Maps.MapTypeId.Roadmap; //Kartentyp (roadmap oder satellite)
Zoom:=1; //Zoom
Center:=Google.Maps.LatLng(0,0); //Kartenzentrum
end;
New(Google.Maps.Map(MapOptions));
// Marker Zeichnen
MarkerOptions:=TMarkerOptions.Create;
MarkerOptions.Map:=Google.Maps.Map(MapOptions);
MarkerOptions.Position:=Google.Maps.LatLng(53,8);
MarkerOptions.Title:='Letzte Position';
New(Google.Maps.Marker(MarkerOptions));
end;
end;
Wenn ich aber später die Parameter ändern möchte, schmiert das Programm mit einer Schutzverletzung ab:
Code:
MapScript1.Maps[0].Zoom:=17;
MapScript1.Maps[0].Center:=MapScript_T1.Google.Maps.LatLng(50,10); //Kartenzentrum
MapScript1.Maps[0].MapTypeID:=MapScript_T1.Google.Maps.MapTypeId.SATELLITE;
Was mache ich falsch?