繁体   English   中英

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

[英]JavaFX WebView inaccurate when displaying OpenLayers maps

我有一个将OpenLayers合并到其WebView中的JavaFX应用程序。 我有一个简单的弹出窗口,当您将鼠标移到它上面时会显示该功能的名称。 我面临的问题是,WebView内部发生的任何事情都是非常不准确的。 例如,当弹出一个弹出窗口时,它不会在鼠标离开该功能后立即消失。 我准备了一个小小的要点, 在这里强调了这个问题。 我在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版本view.getEngine().getUserAgent()Mozilla/5.0 (Linux x86_64) AppleWebKit/602.1 (KHTML, like Gecko) JavaFX/8.0 Safari/602.1

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

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

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

您还可以使用JCEFJava Chromium Embedded Framework )在您的应用程序中嵌入chrome 不幸的是,它仅适用于AWT / Swing,并且将它嵌入SwingNode太复杂了 - 所以如果你想使用这个库你必须改变你的应用程序的结构

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM