JavaFX 17 之后,Leaflet 无法在 WebEngine 中工作

Cha*_*row 7 java javafx leaflet javafx-webengine javafx-17

我有一个使用 JavaFX 16 制作的应用程序,其中包含一个 WebView,用于使用 Leaflet JS 库显示交互式地图。

当我尝试转换到 JavaFX 17 时遇到问题,交互式地图不再工作(无法移动或单击,但可以滚动)。我在使用 Leaflet 的 OpenStreetMap 网站的一个最小示例中重现了该错误:

package test;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class App extends Application {

    @Override
    public void start(Stage stage) {
        WebView webView = new WebView();
        webView.getEngine().load("https://www.openstreetmap.org/");
        Scene scene = new Scene(new StackPane(webView), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}
Run Code Online (Sandbox Code Playgroud)

OpenStreetMap 网站上的交互式地图已正确渲染,并且可以放大,但无法移动。

我正在使用 Gradle 下载 JavaFX,这是我的 build.gradle :

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.10'
}

repositories {
    mavenCentral()
}

javafx {
    version = "17"
    modules = [ 'javafx.controls', 'javafx.web']
}

application {
    mainClass = 'test.App'
}
Run Code Online (Sandbox Code Playgroud)

我用以下版本重现了该错误:

  • 18个+5个
  • 17.0.1
  • 17 号
  • 17个+2

但该地图适用于以下版本:

  • 16
  • 15

所以看来版本 17 带来了这个问题。

我还在 macOS 12(M1 使用 x86 JavaFX 和 Rosetta)和 Ubuntu 20 上重现了该错误。所以这似乎不是 macOS 上的 JavaFX 的问题。

其他交互式地图(例如 Google 地图、Apple 地图和 Bing 地图)使用与上述相同的代码,而 MapBoxGL 则无法工作,因为不支持 WebGL。所以看来这个问题与Leaflet有关。

所以我想知道这是否是一个已知问题,是否有其他人有同样的问题,或者这是否是我这边的问题?

mip*_*ipa 3

我已将其输入 JDK bug 数据库,因为这里似乎存在更普遍的问题。请参阅: https: //bugs.openjdk.java.net/browse/JDK-8276859 这也不是有关此类问题的唯一报告。另请参阅:Java 更新到版本 1.8.0_301 JavaFX WebView 与 Leaflet.Draw.Circle 后,Leaflet.Edit.Circle 不起作用,OSM 不可拖动