我有一个 JavaFX 应用程序,它将 OpenLayers 合并到其 WebView 中。我有一个简单的弹出窗口,当您将鼠标移到某个功能上时,它会显示该功能的名称。我面临的问题是 WebView 内部发生的任何事情都是非常不准确的。例如,当触发弹出窗口时,它不会在鼠标移开该功能后立即消失。我准备了一个小要点来强调这个问题here 。我在 JavaFX for WebView 中使用此代码:
private void initialize() {
WebView view = new WebView();
webEngine = view.getEngine();
URL urlOpenLayers = getClass().getResource("/html/trainmap.html");
webEngine.setJavaScriptEnabled(true);
webEngine.load(urlOpenOpenLayers.toExternalForm());
}
我在这里发布了这个而不是 GIS StackExchange,因为这似乎是 JavaFX WebView 问题而不是 OpenLayers 的问题。相同的代码在 Chrome 中按预期工作。
这是我调用 view.getEngine().getUserAgent()
时的 WebView 版本:Mozilla/5.0 (Linux x86_64) AppleWebKit/602.1 (KHTML,如 Gecko) JavaFX/8.0 Safari/602.1
最佳答案
WebView 似乎正在使用 Java Graphics 2D API 来渲染网页。运行一些测试后,很明显 JavaFX 的这个组件已经多年没有更新,因此无法与许多现代 Web 内容(例如 OpenLayers)一起使用。
我遇到的一个解决方案是切换到 JxBrowser,它在 Chromium 上运行。需要注意的是,JxBrowser 不是免费使用的,但它有 30 天的试用期。
关于javascript - 显示 OpenLayers map 时 JavaFX WebView 不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093698/