【问题标题】:JavaFX WebView inaccurate when displaying OpenLayers maps显示 OpenLayers 地图时 JavaFX WebView 不准确
【发布时间】:2017-03-29 12:35:25
【问题描述】:

我有一个将 OpenLayers 合并到其 WebView 中的 JavaFX 应用程序。我有一个简单的弹出窗口,当您将鼠标移到某个功能上时它会显示它的名称。我面临的问题是 WebView 内部发生的任何事情都是非常不准确的。例如,当触发弹出窗口时,它不会在鼠标离开该功能后立即消失。我准备了一个小要点来突出这个问题here。我在 JavaFX 中为 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

【问题讨论】:

    标签: javascript java javafx webview openlayers-3


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      您还可以使用 JCEFJava Chromium 嵌入式框架)将 chromium 嵌入到您的应用程序中。不幸的是,它只适用于 AWT/Swing,并且将其嵌入到 SwingNode 中太复杂了 - 所以如果你想使用这个库,你必须更改应用程序的结构

      【讨论】:

        猜你喜欢
        • 2019-08-12
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多