我有一个使用 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();
}
}
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'
}
我用版本重现了这个错误:
- 18-EA+5
- 17.0.1
- 17
- 17个+2
但地图适用于版本:
- 16
- 15
所以似乎版本 17 带来了这个问题。
此外,我在 macOS 12(使用 x86 JavaFX 和 Rosetta 的 M1)和 Ubuntu 20 上重现了该错误。因此,macOS 上的 JavaFX 似乎不是问题。
其他交互式地图,如 Google 地图、Apple 地图和 Bing 地图,使用与上述相同的代码工作,而 MapBoxGL 不工作,因为不支持 WebGL。所以看来这个问题与Leaflet有关。
所以我想知道这是否是一个已知问题,是否其他人有同样的问题,或者它是否是我这边的问题?