显示OpenLayers映射时,JavaFX WebView不准确

时间:2017-03-29 12:35:26

标签: javascript java javafx webview openlayers-3

我有一个将OpenLayers合并到其WebView中的JavaFX应用程序。我有一个简单的弹出窗口,当您将鼠标移到它上面时会显示该功能的名称。我面临的问题是,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, like Gecko) JavaFX/8.0 Safari/602.1

2 个答案:

答案 0 :(得分:0)

WebView似乎正在使用Java Graphics 2D API来渲染网页。在运行一些测试后,很明显JavaFX的这个组件多年来一直没有更新,因此无法使用很多现代Web内容,比如OpenLayers。

我遇到的一个解决方案是切换到JxBrowser,而不是在Chromium上运行。应该注意的是,JxBrowser不能免费使用,但确实有30天的试用期。

答案 1 :(得分:0)

  

我遇到的一个解决方案是切换到JxBrowser,而不是在Chromium上运行。应该注意的是,JxBrowser不能免费使用,但确实有30天的试用期。

您还可以使用JCEF Java Chromium Embedded Framework )在您的应用程序中嵌入chrome。不幸的是它仅适用于AWT / Swing并且它太复杂而无法将其嵌入SwingNode中 - 因此如果您想使用此库,则必须更改应用程序的结构