我需要使用 Swing 在 JPanel 中显示交互式地图,因此我决定使用 Google Maps API,但我不知道该怎么做。我看过以前回答我的问题的帖子,但它们是过时的解决方案。或者,如果我无法将其嵌入到我的程序中,我也考虑过使用 Mapbox API,但我遇到了同样的问题,不知道如何将它嵌入到我的程序中。另外需要注意的是:我必须使用 IntelliJ IDEA,因此我无法使用 Netbean 等其他 IDE 来实现此功能。如果有人知道如何在不使用 JxBrowser 的情况下通过 JPanel 显示交互式地图,请告诉我!
我尝试使用 JxBrowser 的教程:https://jxbrowser-support.teamdev.com/docs/tutorials/maps.html,但我的许可证由于某种原因无法使用。每当我跑步的时候
EngineOptions options = EngineOptions.newBuilder(HARDWARE_ACCELERATED).licenseKey("API_KEY").build();
即使我刚刚获得许可证,我最终还是得到了 InvalidLicenseException,因此我无法为此使用 JxBrowser 库。我也尝试过使用 JavaFX 库。诚然,我不熟悉如何使用这个库,所以我使用了 ChatGPT 生成的代码,但它导致了空白屏幕:
import javax.swing.*;
import java.awt.*;
public class GoogleMapsSwingExample extends JFrame {
public GoogleMapsSwingExample() {
super("Google Maps in Java Swing");
JEditorPane editorPane = new JEditorPane();
editorPane.setEditable(false);
editorPane.setContentType("text/html");
// Enable debugging output
editorPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true);
editorPane.setText("<html><body><iframe width=\"600\" height=\"450\" style=\"border: 0\" loading=\"lazy\" allowfullscreen " +
"src=\"https://www.google.com/maps/embed/v1/place?key=API_KEY&q=Eiffel%20Tower\" " +
"onerror=\"alert('Failed to load Google Maps')\"></iframe></body></html>");
JScrollPane scrollPane = new JScrollPane(editorPane);
add(scrollPane, BorderLayout.CENTER);
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
GoogleMapsSwingExample example = new GoogleMapsSwingExample();
example.setVisible(true);
});
}
}
我真的不知道该怎么办。如有任何帮助,我们将不胜感激。
交互式地图本质上是一个网页。不幸的是,Swing 中内置的任何内容都无法显示现代网页。
您有以下选择: