如何在 Java 应用程序上显示由 Google Maps API 生成的交互式地图?

问题描述 投票:0回答:1

我需要使用 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);
        });
    }
}

我真的不知道该怎么办。如有任何帮助,我们将不胜感激。

java swing google-maps google-maps-api-3
1个回答
0
投票

交互式地图本质上是一个网页。不幸的是,Swing 中内置的任何内容都无法显示现代网页。

您有以下选择:

  1. 使用 JCEF(这是 JetBrain 分支的链接,他们在这方面做了很多工作)。
  2. 使用 JavaFX 及其 WebView。 JavaFX 版本越新越好,因为它们每次发布都会更新底层 WebKit 引擎。
  3. 使用SWT及其嵌入式浏览器。该控件将使用操作系统提供的浏览器,因此您可能无法在不同平台上获得一致的行为。但它们应该能够显示 Google 地图。
  4. 写入 JxBrowser 并找出许可证出了什么问题。我们随时准备提供帮助。
© www.soinside.com 2019 - 2024. All rights reserved.