Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#513

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

  Alt 6. Okt 2017, 18:02
Hallo,

mir ist schon klar das Thom seit geraumer Zeit nicht mehr Online ist, aber eventuell kann jemand helfen.
Ich habe eine csv-datei mit ca. 570 Werten, von diesen möchte ich screenshots machen, doch es scheiter schon an:
Code:
https://www.google.de/maps/@51.1758057,10.4541194,6z
Es wird ein Script-Fehler generiert(Siehe Grafik). Da auf einen 'externalen OnApiLoaded' verwiesen wird,
scheint es hier einen Fehler zu geben:
Delphi-Quellcode:
...
procedure TForm1.GeoListViewDblClick(Sender: TObject);
begin
  FCurrentIndex := GeoListView.ItemIndex;
  RunTimer.Enabled := ((GeoListView.Items.Count > 0) and (FScreenShotPath <> EmptyStr));
end;

procedure TForm1.ItsTime(Sender: TObject);
begin
  RunTimer.Enabled := False;
  if Script=nil then
    with TScript.Create(WebBrowser1) do
      LoadAPIAsync(InitMap);
end;

procedure TForm1.InitMap(Sender: TObject);

  function StrToDouble(Value : String) : Double;
  begin
    Result := StrToFloat(StringReplace(Value, '.', ',', [rfReplaceAll, rfIgnoreCase]));
  end;

var
  MyOptions : TMapOptions;
  LI : TListItem;
  Latitude : Double;
  Longitude : Double;
  ZoomF : Integer;
  TypeID : Byte;
  Url : String;
begin
  LI := GeoListView.Items[FCurrentIndex];
  if ((LI.SubItems[3] = EmptyStr) and // Latitude
      (LI.SubItems[4] = EmptyStr) and // Logitude
      (LI.SubItems[5] = EmptyStr)) then // Zoom
  begin
    Url := Copy(LI.SubItems[0], POS('@', LI.SubItems[0]) + 1, Length(LI.SubItems[0]));
    Latitude := StrToDouble(Copy(Url, 1, POS(',', Url) - 1));
    Url := Copy(Url, POS(',', Url) + 1, Length(Url));
    Longitude := StrToDouble(Copy(Url, 1, POS(',', Url) - 1));
    Url := Copy(Url, POS(',', Url) + 1, Length(Url));
    ZoomF := Round(StrToDouble(Copy(Url, 1, POS('z', Url) -1)));
  end
  else
  begin
    Latitude := StrToDouble(LI.SubItems[3]);
    Longitude := StrToDouble(LI.SubItems[4]);
    ZoomF := Round(StrToDouble(Copy(LI.SubItems[5], 1, POS('z', LI.SubItems[5]) -1)));
  end;
  TypeID := Ord(LI.SubItems[6][1]);

  with TScript(Sender) do
  begin
    MyOptions := TMapOptions.Create;
    with MyOptions do
    begin
      Zoom := ZoomF;
      Center := New(Google.Maps.LatLng(Latitude, Longitude));
      case TypeID of
        72 : MapTypeID := Google.Maps.MapTypeID.Hybrid;
        82 : MapTypeID := Google.Maps.MapTypeID.Roadmap;
        83 : MapTypeID := Google.Maps.MapTypeID.Satellite;
        84 : MapTypeID := Google.Maps.MapTypeID.Terrain;
      end;
    end;
    New(Google.Maps.Map(MyOptions));
  end;
end;
Achso, die csv-datei wird in eine ListView(Report) geladen und durch Doppelclick der Timer gestartet,
der FEATURE_BROWSER_EMULATION Eintrag ist vorhanden.

Wie müsste ich es anders machen?
Miniaturansicht angehängter Grafiken
scripfehler1.png  
  Mit Zitat antworten Zitat