Einzelnen Beitrag anzeigen

Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#509

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

  Alt 24. Mär 2017, 09:45
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.
Stefan

Geändert von GPRSNerd (24. Mär 2017 um 11:51 Uhr)
  Mit Zitat antworten Zitat