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)
我用以下版本重现了该错误:
但该地图适用于以下版本:
所以看来版本 17 带来了这个问题。
我还在 macOS 12(M1 使用 x86 JavaFX 和 Rosetta)和 Ubuntu 20 上重现了该错误。所以这似乎不是 macOS 上的 JavaFX 的问题。
其他交互式地图(例如 Google 地图、Apple 地图和 Bing 地图)使用与上述相同的代码,而 MapBoxGL 则无法工作,因为不支持 WebGL。所以看来这个问题与Leaflet有关。
所以我想知道这是否是一个已知问题,是否有其他人有同样的问题,或者这是否是我这边的问题?
我已将其输入 JDK bug 数据库,因为这里似乎存在更普遍的问题。请参阅: https: //bugs.openjdk.java.net/browse/JDK-8276859 这也不是有关此类问题的唯一报告。另请参阅:Java 更新到版本 1.8.0_301 JavaFX WebView 与 Leaflet.Draw.Circle 后,Leaflet.Edit.Circle 不起作用,OSM 不可拖动