Delphi-PRAXiS
Seite 13 von 14   « Erste     3111213 14      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Google Maps über COM (Component Object Model) (https://www.delphipraxis.net/157004-google-maps-ueber-com-component-object-model.html)

GPRSNerd 25. Mai 2016 10:10

AW: Google Maps über COM (Component Object Model)
 
Hmmmmhh, passiert bei mir auch, auch wenn ich als Version die 3.23 oder 3.24 angebe.
Es sieht so aus, als ob alle, die nicht einen API-Key angeben, die Experimental Version ausgeliefert bekommen, in der dann vielleicht ein Fehler oder eine Inkompatibilität ist:

If you are using a Maps API for Business client ID or you are on the premium plan, you will be provided with the release version by default. If you are on the standard plan or have no key nor clientid, you will be provided with the experimental release by default.

jonathan 25. Mai 2016 10:25

AW: Google Maps über COM (Component Object Model)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Und wie kommt man an so einen API-Key?

[Edit]
Hab jetzt einen API-Key von GOOGLE erhalten und den als Parameter mit angegeben ... bringt leider auch nix (siehe screenshot).

GPRSNerd 25. Mai 2016 10:57

AW: Google Maps über COM (Component Object Model)
 
Du hast jetzt als Version "3.2" angegeben. Was passiert mit 3.24 (Release) oder 3.23 (frozen)?

jonathan 25. Mai 2016 11:02

AW: Google Maps über COM (Component Object Model)
 
Ich hab natürlich alles mögliche probiert 3, 3.2, 3.20 - 3.25
Funktioniert nicht :cry:

[Edit]
Probiers selbst - den Key hab ich hierher:
https://developers.google.com/maps/d...pt/get-api-key

GPRSNerd 25. Mai 2016 11:22

AW: Google Maps über COM (Component Object Model)
 
Jau, das gleiche Verhalten hier auch mit Key, mit neuer BaseURL (https://maps.googleapis.com/maps/api/js?) und ohne Sensor-Property.
Da bin ich mit meinem Latein auch erstmal am Ende...

jonathan 25. Mai 2016 12:32

AW: Google Maps über COM (Component Object Model)
 
Hast du vielleicht eine Idee, wie man das näher debuggen kann?

Wonderdoc 25. Mai 2016 12:58

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

das script error Problem mit der onion.js tritt seit Map-Api V3.23 auf.
Bis zum 3.Mai konnte man noch die alte V3.22 benutzen.
Ab diesen Datum wird man automatisch auf die V3.23 von google umgeroutet.

Die verwendete Api Version kann man sich wie folgt ausgeben lassen:
Code:
showmessage('Google Map-API: V'+Script.Google.Maps.Version);
Wenn man nach dem Fehler bei Google sucht,
findet man z.B. einen Lösungsansatz:

Folgene Meta-Info soll in den Header eingebaut werden:
Code:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Damit bekomme ich aber einen Laufzeitfehler, wenn ich z.B. eine Distance Abfrage mache.

Mit dem Meta-Tag
Code:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
scheint es bei mir jetzt zu laufen.

PS:Hab jetzt mal in der gmApi.pas in Zeile 1408 vor "if LoadAPI then" das mit dem Meta auf IE=8 eingebaut
Zitat:

{$IFDEF IE7_MODUS}
Result:=Result+
' <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE11" />';
{$ENDIF}
Result:=Result+
' <meta http-equiv="X-UA-Compatible" content="IE=8" />';


if LoadAPI then
begin


mfg
Wonderdoc

jonathan 25. Mai 2016 13:32

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

vielen Dank!
Das "onion.js" Problem ist damit scheinbar gelöst.

Es bleibt aber immer noch der Script-Fehler direkt nach dem Aufruf (external.OnAPILoaded - siehe Screenshot).
Hat jemand eine Idee, was es damit auf sich hat?

[Edit]
OK, der Fehler ist weg, wenn man LoadAPI() statt LoadAPIAsync() aufruft, so wird der callback Aufruf vermieden - scheinbar hat GOOGLE hier was verändert.

Allerdings funktioniert eine weitere Sache gar nicht mehr:
MarkerClusterer
Warum auch immer... es gibt keine Fehlermeldung, aber die Marker werden nicht mehr gruppiert
:cry:

[Edit2]
Das hier scheint der Grund für das MarkerClusterer Problem zu sein:
https://github.com/tomchentw/react-g...aps/issues/255
Allerdings bekomme ich die MarkerClusterer.pas vom Thom trotzdem nicht zum laufen.

Hat hier jemand ebenfalls MarkerClusterer im Einsatz und kann mir den Trick verraten, wie es wieder funktioniert?
Danke!

olaf43 26. Mai 2016 16:09

AW: Google Maps über COM (Component Object Model) Panning Problem
 
Ich habe mit dieser Bridge ein sehr hilfreiches Programm geschrieben und bin begeistert von der Möglichkeit, aus Delphi Google Maps zu verwenden.
Ich habe nur ein kleines Problem:
Wenn man die Karte mehrmals vergrößert und verkleinert hat, kan man das Kartenbild nicht mehr verschieben. (Die Schiebe-Hand hat dann dauernd die Form, die sie sonst nur während des Verschiebens annimmt).
Mein Karteninterface ist weitgehend identisch zu version 2; Marker Simple.
Gibt es ainen Ausweg?
Vielen Dank!
olaf43

jonathan 27. Mai 2016 07:02

AW: Google Maps über COM (Component Object Model)
 
Das liegt an den hier zuletzt diskutierten Auswirkungen der Umstellung auf die neue Version.
Stell mal die Eigenschaft "Silent" vom TWebBrowser auf "False" ... dann kommen die Fehlermeldungen!

Pass deine gmApi.pas entsprechend an und nutze LoadAPI() statt LoadAPIAsync(), dann sollte es klappen.

duff 23. Sep 2016 09:16

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

beim mir funktionieren Adressensuche und Routenberechnung nicht mehr. Es endet mit einer Exception in der Function
Delphi-Quellcode:
PropertyExists
Delphi-Quellcode:
function TDispObject.PropertyExists(const Name: String): Boolean;
var
  DispID: Integer;
begin
  Result:=GetDispID(FDisp,Name,DispID);
end;
Kann das noch jemand beobachten?

tueddy 28. Sep 2016 16:09

AW: Google Maps über COM (Component Object Model)
 
Ja, ich habe laut diesem Thread https://code.google.com/p/gmaps-api-...detail?id=9004
den Header so erweitert:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

Danach bekomme ich den gleichen Dispatch-Fehler. Es scheint über JavaScript die Eigenschaft "length" abgefragt zu werden in Methode
procedure TDirectionsServiceCallbackObject.Callback;

Wie kann man den Fehler vermeiden?

duff 16. Nov 2016 08:34

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

seit heute läuft der Aufruf der PanTo Methode in eine Exception

Delphi-Quellcode:
Script[j].Maps[0].PanTo(LatLng);


Edit:

PanTo funktioniert solange kein Zoom vorher oder nachher aufgerufen wird

Edit 2:

Also das anlegen von Circles ist das Problem. Dieses führt zu einem Scriptfehler: http://maps.google.com/maps-api-v3/a...de_ALL/poly.js

Dies hat bis gestern noch funktioniert


Kann das jemand bestätigen?

Gruß

jonathan 16. Nov 2016 15:10

AW: Google Maps über COM (Component Object Model)
 
Bekomme auch einen poly.js Fehler seit heute ... allerdings beim Anlegen eines Polygons.
:(

Edit:
Der Fehler kommt nicht beim Erzeugen, sondern wenn man die Karte mit Poly.SetMap() oder Poly.Map:= zuordnet.
Das Objekt selbst wid problemlos erzeugt und es kann auch darauf zugegriffen werden... nur die Karte kann nicht zugeordnet werden.
Damit ist es aber natürlich unsichtbar - und damit das ganze witzlos
:-(

dietmar.boehme 18. Nov 2016 16:02

AW: Google Maps über COM (Component Object Model)
 
Ich habe das gleiche Problem mit poly.js,
lasse ich die Map-Zuweisung weg gibt es keinen Fehler mehr, aber auch keine Polylines auf der Karte.

jonathan 19. Nov 2016 17:16

AW: Google Maps über COM (Component Object Model)
 
Ja, schöner Mist.
:evil:

Habe jetzt mal die GMLib ausprobiert.
Da ist zwar der letzte Stand immerhin vom September 2015 ... es tritt dort aber exakt der gleiche Fehler (Error in poly.js) auf!
Und ausserdem ist die GMLib viel langsamer als Thoms Umsetzung.

Hat jemand diese kostenpflichtige Lib hier (von TMS) mal ausprobiert?
Oder weiss sonst jemand hier eine funktionierende Alternative?

DelphiFan2008 20. Nov 2016 09:51

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

ich habe bei mir folgende Code-Zeilen angepasst - im Prinzip schon ähnlich hier im Thread beschrieben - ohne den echten Hintergrund zu verstehen. Nachdem kam der "Poly.js" Fehler nicht mehr.

Delphi-Quellcode:
 
  {$IFDEF IE7_MODUS}
    Result:=Result+
        '   <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE11" />
    {$ENDIF}
      Result:=Result+
          '   <meta http-equiv="X-UA-Compatible" content="IE=edge" />';
//        '   <meta http-equiv="X-UA-Compatible" content="IE=8" />';
  if LoadAPI then
  begin
Gruß DelphiFan2008

jonathan 20. Nov 2016 16:36

AW: Google Maps über COM (Component Object Model)
 
Hallo DelphiFan2008,
wenn ich auf "EmulateIE11" oder "edge" stelle gibt es eine AccessViolation bei mir.
:cry:

duff 21. Nov 2016 09:35

AW: Google Maps über COM (Component Object Model)
 
Ich habe schreibe jetzt nur noch folgende meta in der gmAPI.pas

Delphi-Quellcode:
Result:=Result+
          '   <meta http-equiv="X-UA-Compatible" content="IE=edge" />'
IE7_MODUS ist auskommentiert.

So kann ich zumindest wieder circles auf die Karte zeichnen.

Was nicht funktioniert:

Sobald ich z.B. ein OnCLick
Delphi-Quellcode:
GMap.OnClick := MapClick;
Event aufrufe (oder eine Adresssuche) läuft er beim aufruf von
Delphi-Quellcode:
FProc
(BrowserTools.pas) in eine exception

Delphi-Quellcode:
function TExternalMethod.Call: Variant;
begin
  Result:=unassigned;
  try
    if assigned(FProc)
      then FProc                                          //Aufruf der Objektmethode ohne Rückgabewert (Prozedur)
      else if assigned(FFunc)
        then Result:=FFunc;                               //Aufruf der Objektmethode mit Rückgabewert (Funktion)
  except
    {$IFDEF DEBUG}                                         //Exceptions dürfen nicht nach außen dringen
    ShowMessage(FName+': '+Exception(ExceptObject).Message);
    {$ENDIF}
  end;
end;
(BrowserTools.pas)

jonathan 21. Nov 2016 09:51

AW: Google Maps über COM (Component Object Model)
 
Wie gesagt, mit "edge" oder "EmulateIE11" funktioniert das komplette Event-Handling nicht mehr und führt zu einer AccessViolation.

Ich habe jetzt mal spasseshalber die TMS VCL WebGMaps Komponente ausprobiert (v2.6.0.0 vom 06.10.2016) und festellen müssen, dass dort exakt der gleiche poly.js-Fehler auftritt!
:evil:

Hat jemand noch eine Idee?
So wie es aussieht, gibt es wohl aktuell keine funktionierende Lösung mehr...
:(

dietmar.boehme 21. Nov 2016 16:01

AW: Google Maps über COM (Component Object Model)
 
Ich habe gerade die TMS-Version 2.6.0.0 "WebGMaps" als Trial unter XE7 ausprobiert,
zumindest das von mir benutzte Zeichen der Polylines (mit Pfeilsymbolen !!!) funktioniert einwandfrei und schnell :-D.

Die (Custom-)Marker und Infowindows (auch mit HTML-Content) sind ebenfalls kurz angetestet und Ok :-D.

himitsu 21. Nov 2016 16:51

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

Zitat von dietmar.boehme (Beitrag 1354313)
Ich habe gerade die TMS-Version 2.6.0.0 "WebGMaps" als Trial unter XE7 ausprobiert,

Es liegt mit größerer Wahrscheinlichkeit nicht am Delphi, sondern eher am Windows, bzw. an der installieren Internet Explorer-Version.
Vielleicht auch an irgendwelchen Einstellungen des IE oder der Firewall.

tueddy 21. Nov 2016 22:04

AW: Google Maps über COM (Component Object Model)
 
Ich habe nach den Fehlern dieser Komponente auf die TMS-GMaps gewechselt & das funktioniert wunderbar.
Dort gibt es zwar auch einige kleine Fehler, aber guten Support und zur Not eine Vorabversion.

jonathan 24. Nov 2016 10:34

AW: Google Maps über COM (Component Object Model)
 
hallo tueddy,
ich überlege auch, auf die komponente von TMS zu wechseln... leider, muss ich sagen.
würde die 100€ lieber dem Thom geben, wenn's dafür eine aktuelle version seines frameworks geben würde 8-)
aber nach zwei jahren NULL reaktion seinerseits gehe ich mal davon aus, dass da nichts mehr kommen wird.

kannst du mir sagen, ob bei TMS KeyDragZoom unterstützt wird?
in der öffentlichen doku kann ich dazu nichts finden...

und was sind die "kleineren fehler", die du entdeckt hast?

danke!

tueddy 24. Nov 2016 10:38

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

Zitat von jonathan (Beitrag 1354589)
hallo tueddy,
ich überlege auch, auf die komponente von TMS zu wechseln... leider, muss ich sagen.
würde die 100€ lieber dem Thom geben, wenn's dafür eine aktuelle version seines frameworks geben würde 8-)
aber nach zwei jahren NULL reaktion seinerseits gehe ich mal davon aus, dass da nichts mehr kommen wird.

kannst du mir sagen, ob bei TMS KeyDragZoom unterstützt wird?
in der öffentlichen doku kann ich dazu nichts finden...

und was sind die "kleineren fehler", die du entdeckt hast?

danke!

Hallo Jonathan,

die kleineren Fehler sind gemeldet (Maps kann u.U. beim Laden hängen, fehlender Wert in Assign-Methode) aber noch veröffentlicht.
Zu KeyDragZoom kann ich nichts sagen, das könntest Du über das Demo ausprobieren.
Insgesamt läuft die Komponente aber recht stabil, ich bin zufrieden mit dem Umstieg.

DerAndereMicha 24. Nov 2016 14:39

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

https://sourceforge.net/projects/gmlibrary/

Gerade zufällig gefunden...

Gruß
Micha

jonathan 24. Nov 2016 15:11

AW: Google Maps über COM (Component Object Model)
 
... hatte ich ausprobiert. die GMLib war für meine anforderungen viel zu langsam.

DelphiFan2008 13. Mär 2017 20:34

AW: Google Maps über COM (Component Object Model)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

seit heute bekomme ich ein neues "Fehlverhalten". Nachdem die Karte geladen und korrekt angezeigt wird erscheint ein paar Sekunden später im Browser-Fenster die Fehlermeldung - siehe Anlage - und die Karte verschwindet zwangsläufig. Kennt jemand Abhilfe?

Gruß DelphiFan2008

GPRSNerd 24. Mär 2017 08:45

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

ich habe die Google Maps Units v2.1 nach den bekannten Problemen seit der Umstellung auf Google Maps API > 3.22 (entweder wegen onion.js oder poly.js-Fehlern o.ä.) wieder mit meinen Programmen unter Delphi X 10.1.2 Berlin zum Laufen gebracht.

Es gibt einen recht ausführlichen Thread bei Google zu den vielfältigen Problemen und deren versuchten Lösungen unter https://issuetracker.google.com/issues/35827696.

Entscheidend ist anscheinend das Konfigurieren des Emulationsmodus der WebBrowser-Komponente, die standardmäßig von Microsoft auf IE7 gesetzt ist, die aber von der Google Maps API wegen fehlenden JSON-Funktionalitäten nicht mehr unterstützt wird.
Diesen Emulationsmodus kann man für seine Applikation in der Registry im USER-Hive auf höhere unterstützte IE-Emulationen setzen, was dann prompt bei mir auf verschiedenen Systemen mit Windows 10 (x86/x64) und Windows 7 (x64) auch funktioniert.
Ich setze den Kompatibilitätseintrag in meiner Applikation (<Applikation.exe>) in FormCreate() unter:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULA TION
mit Eintrag "<Applikation.exe>" mit Wert DWORD = "0x00002af9"
Folgende Werte kann man für die Emulation wohl setzen (habe ich von einer MSDN-Seite):
  • 11001 (0x2AF9): Internet Explorer 11. Webpages are displayed in IE11 Standards mode, regardless of the !DOCTYPE directive.
  • 11000 (0x2AF8): Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
  • 10001 (0x2AF7): Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.
  • 10000 (0x2710): Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
  • 9999 (0x270F): Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
  • 9000 (0x2328): Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
  • 8888 (0x22B8): Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
  • 8000 (0x1F40): Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
  • 7000 (0x1B58): Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.

Zusätzlich setzte ich standardmäßig in der generierten HTML-Page (in der unit gmAPI.pas), wie in früheren Einträgen schon diskutiert, einen Meta-Eintrag im Header mit: <meta http-equiv="X-UA-Compatible" content="IE=edge" />';

Ich hoffe, das hilft euch auch weiter.

DelphiFan2008 1. Mai 2017 08:45

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

mir ist dein Vorgehen nicht ganz klar

- was trage/ändere ich in der eigenen Applikation?
- was trage/ändere ich z.B. mit RegEdit direkt ein?
- <Applikation.exe> mit komplettem Pfad oder nur den Namen?

Gruß DelphiFan2008

GPRSNerd 1. Mai 2017 11:43

AW: Google Maps über COM (Component Object Model)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von DelphiFan2008 (Beitrag 1369571)
Hallo GPRSNerd,

mir ist dein Vorgehen nicht ganz klar

- was trage/ändere ich in der eigenen Applikation?
- was trage/ändere ich z.B. mit RegEdit direkt ein?
- <Applikation.exe> mit komplettem Pfad oder nur den Namen?

Gruß DelphiFan2008

Den folgenden Eintrag setzt meine Applikation mit Namen "Tracktool.exe" in der Registry, ist aber alles oben im Detail beschrieben:

Anhang 47223

manfred_h 13. Sep 2017 15:29

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

Zitat von GPRSNerd (Beitrag 1365450)

Ich hoffe, das hilft euch auch weiter.

Besten Dank für diese Info, hat mir viel mühe erspart! :thumb::thumb:

Shalom
Manfred

Alter Mann 6. Okt 2017 18:02

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:
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?

GPRSNerd 7. Okt 2017 18:08

AW: Google Maps über COM (Component Object Model)
 
Der Aufruf darf nicht mehr über LoadAPIAsync() gemacht werden, sondern über LoadAPI():

Delphi-Quellcode:
      //LoadAPIAsync(InitMap,
      LoadAPI    (InitMap,
                   DefaultLanguage,
                   DefaultRegion,
                   GMapBrowserKey,
                   GMapAPIVersion,
                   GMapIEVersion);
PS: Ich habe die Funktion überladen, evtl. stimmen meine Parameter nicht mehr mit dem Standard überein.

Alter Mann 10. Okt 2017 19:51

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

Der Aufruf darf nicht mehr über LoadAPIAsync() gemacht werden, sondern über LoadAPI():
Komisch, die meistem Demos laufen auch unter 10.2.1 und nutzen LoadAPIAsync().
Könntest du kurz darauf eingehen warum nun nur LoadAPI genutzt werden soll.
Danke.

Peter.Stadler 2. Nov 2017 14:27

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:
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;
mfg Peter

GPRSNerd 2. Nov 2017 14:35

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

Peter.Stadler 2. Nov 2017 15:31

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:
 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;
Der Compilationsfehler: [dcc32 Fehler] GoogleMaps_Unit1.pas(2694): E2010 Inkompatible Typen: 'TMapEventEvent' und 'Procedure'.
Wenn ich mit XE8 compiliere tritt der Fehler nicht auf.

mfg Peter

GPRSNerd 2. Nov 2017 20:15

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

Peter.Stadler 3. Nov 2017 07:16

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 12:17 Uhr.
Seite 13 von 14   « Erste     3111213 14      

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