【问题标题】:TWebBrowser & OpenLayers 3TWebBrowser & OpenLayers 3
【发布时间】:2017-08-16 16:38:28
【问题描述】:

我正在尝试在 Delphi 的 TWebBrowser 中使用 OpenLayers。

当我使用 OpenLayers v4.3.1 从他们的网站打开一个简单示例时,我似乎无法平移地图。

WebBrowser1.Navigate('http://openlayers.org/en/latest/examples/simple.html');

我使用另一篇文章中的代码设置了嵌入式网络浏览器模式。 setEmbeddedWebbrowserMode(iemIE10);

不过,OpenLayers v3.4 似乎可以工作。我可以使用以下罚款: WebBrowser1.Navigate('http://www.acuriousanimal.com/thebookofopenlayers3/chapter01_01_basic_map.html');

如果可能,我希望能够使用最新的 API。知道为什么新的不能在 TWebBrowser 中工作吗?

【问题讨论】:

  • 没有XE10这样的东西。
  • 与其让我们尝试重新创建您正在做的事情,如果有一个minimal reproducible example 会有所帮助。
  • 感谢您的帮助和快速响应大卫!真的只有一行代码可以让它工作。它应该只是加载一个带有简单 openlayers 地图的 HTML 页面。我也尝试重新措辞我原来的问题。希望这会有所帮助。
  • 真正重要的是避免兼容模式。
  • 知道了!我尝试了两种方法,第一种是将元数据嵌入到页面中。没有它,它根本没有加载并使用开放层 api 得到 js 错误。其次,我还在注册表中添加了一个条目:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION REG_QWORD 0x00002711 (10001)

标签: delphi openlayers-3 twebbrowser


【解决方案1】:

示例的问题在于它们包含EdgeHTML 模式的文档模式元标记:

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

并且它们无法与 IE11 网络浏览器控件一起正常工作(我们也遇到了一些鼠标输入问题)。这里的建议很简单,向您的客户提供经过验证的 OpenLayers 库副本,并在他们完全兼容 IE11 之前,尝试在您的 Web 应用程序中使用 IE10 模式:

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

或使用其他嵌入式 Web 浏览器控件(例如基于 CEF)。

【讨论】:

  • 我复制了页面并将其托管在我们的服务器上,没有元标记,一切正常!!非常感谢您的帮助!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多