Einzelnen Beitrag anzeigen

mischo22

Registriert seit: 23. Mär 2006
9 Beiträge
 
#401

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

  Alt 19. Jun 2013, 09:23
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?

Geändert von mischo22 (19. Jun 2013 um 09:27 Uhr)
  Mit Zitat antworten Zitat