AW: Google Maps über COM (Component Object Model)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 47223 |
AW: Google Maps über COM (Component Object Model)
Zitat:
Shalom Manfred |
AW: Google Maps über COM (Component Object Model)
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Es wird ein Script-Fehler generiert(Siehe Grafik). Da auf einen 'externalen OnApiLoaded' verwiesen wird,
https://www.google.de/maps/@51.1758057,10.4541194,6z
scheint es hier einen Fehler zu geben:
Delphi-Quellcode:
Achso, die csv-datei wird in eine ListView(Report) geladen und durch Doppelclick der Timer gestartet,
...
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; der FEATURE_BROWSER_EMULATION Eintrag ist vorhanden. Wie müsste ich es anders machen? |
AW: Google Maps über COM (Component Object Model)
Der Aufruf darf nicht mehr über LoadAPIAsync() gemacht werden, sondern über LoadAPI():
Delphi-Quellcode:
PS: Ich habe die Funktion überladen, evtl. stimmen meine Parameter nicht mehr mit dem Standard überein.
//LoadAPIAsync(InitMap,
LoadAPI (InitMap, DefaultLanguage, DefaultRegion, GMapBrowserKey, GMapAPIVersion, GMapIEVersion); |
AW: Google Maps über COM (Component Object Model)
Zitat:
Könntest du kurz darauf eingehen warum nun nur LoadAPI genutzt werden soll. Danke. |
AW: Google Maps über COM (Component Object Model)
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo
Ich versuche das Framework von Thom in Rad Studio XE 10.2 Tokyo zu installieren. Dazu habe ich das file gmConfig.inc upgedated. Leider gibt es dann einen Compilation error mit Studio XE 10.2 Tokyo, wenn ich versuche den Source in meine Programme einzubinden. Vielleicht ist es ein Fehler im gmConfig.file, vielleicht auch nicht. Kann jemand das File testen? Im Bild 1 ist der Compilation error als Screenshot zu sehen. Bin für jeden Hinweis dankbar. Der Compilationsfehler [dcc32 Fehler] GoogleMaps_Unit1.pas(2694): E2010 Inkompatible Typen: 'TMapEventEvent' und 'Procedure' hängt vielleicht mit {$IFDEF USE_ANONYMOUS_METHODS} zusammen. Der Fehler tritt auf in dieser Procedure:
Code:
mfg Peter
procedure AttachSecretMessage(Marker: TMarker; Num: Integer);
var //{$IFDEF USE_ANONYMOUS_METHODS} InfoWindow: TInfoWindow; //{$ENDIF} InfoWindowOptions: TInfoWindowOptions; var callString : string; begin with Script do begin InfoWindowOptions:=TInfoWindowOptions.Create; InfoWindowOptions.Content := MBParams[ActiveFilter,Num]; InfoWindow := gmAPI.New(Google.Maps.InfoWindow(InfoWindowOptions)); Marker.OnClick := procedure(Sender: TObject; Event: TEvent) begin InfoWindow.Open(Marker.GetMap,Marker); callString := 'GM '+MBParams[ActiveFilter,Num]; actualSite := MBParams[ActiveFilter,Num]; if(ClipboardCB=True) then begin Clipboard.AsText := actualSite; end else begin RunProg.RunProgramWaiting(progPath, '',callString); end; end; end; end; |
AW: Google Maps über COM (Component Object Model)
Ich hatte in Post #479 mal eine aufwärtskompatible gmconfig.inc hochgeladen, die bei mir seitdem mit allen neuen IDEs ohne Anpassungen funktioniert:
http://www.delphipraxis.net/1333914-post479.html |
AW: Google Maps über COM (Component Object Model)
Vielen Dank für die versionsunabhängige gmConfig. Leider compiliert es nicht. Eigentlich sollte laut gmConfig die USE_ANONYMOUS_METHODS definiert sein,
aber InfoWindow ist undefiniert. Wenn ich die beiden conditionalen Abfragen auskommentiere, ist zwar InfoWindow definiert, aber der zuletzt aufgetretene Fehler kehrt zurück:
Code:
Der Compilationsfehler: [dcc32 Fehler] GoogleMaps_Unit1.pas(2694): E2010 Inkompatible Typen: 'TMapEventEvent' und 'Procedure'.
procedure AttachSecretMessage(Marker: TMarker; Num: Integer);
var //{$IFDEF USE_ANONYMOUS_METHODS} InfoWindow: TInfoWindow; //{$ENDIF} InfoWindowOptions: TInfoWindowOptions; var callString : string; begin with Script do begin InfoWindowOptions:=TInfoWindowOptions.Create; InfoWindowOptions.Content := MBParams[ActiveFilter,Num]; InfoWindow := gmAPI.New(Google.Maps.InfoWindow(InfoWindowOptions)); Marker.OnClick := procedure(Sender: TObject; Event: TEvent) begin InfoWindow.Open(Marker.GetMap,Marker); callString := 'GM '+MBParams[ActiveFilter,Num]; actualSite := MBParams[ActiveFilter,Num]; if(ClipboardCB=True) then begin Clipboard.AsText := actualSite; end else begin RunProg.RunProgramWaiting(progPath, '',callString); end; end; end; end; Wenn ich mit XE8 compiliere tritt der Fehler nicht auf. mfg Peter |
AW: Google Maps über COM (Component Object Model)
Den Fehler hatte ich in der Vergangenheit auch mal, hängt mit der Reihenfolge des uses-Anweisungen zusammen: HTMLObjects muss nach gmEvents eingebunden werden, ich hatte in meiner App sogar noch einen Kommentar dahinter, siehe unten:
Delphi-Quellcode:
uses
//GoogleMaps-API BrowserTools, gmBase, gmAPI, gmMap, gmOverlaysPolylinePolygon, gmOverlaysMarker, gmOverlaysBase, gmEvents, HTMLObjects, //immer als letztes da sonst Marker.OnClick nicht geht |
AW: Google Maps über COM (Component Object Model)
Danke für die Antwort.
Leider hat das Einhalten Deiner Reihenfolge keinen Einfluß auf den Compilationsfehler von oben. mfg Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz