2

这是使用 jxbrowser 在 swing 应用程序上显示地图的代码。但是当我单击按钮时,“未捕获的 ReferenceError:未定义地图”会显示此错误。该应用程序正在显示地图。但是 joom in out 和标记按钮不起作用。我应该怎么办?

    final Browser browser = new Browser();
    BrowserView view = new BrowserView(browser);

    JButton zoomInButton = new JButton("Zoom In");
    zoomInButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (zoomValue < MAX_ZOOM) {
                browser.executeJavaScript("map.setZoom(" + ++zoomValue + ")");
            }
        }
    });

    JButton zoomOutButton = new JButton("Zoom Out");
    zoomOutButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (zoomValue > MIN_ZOOM) {
                browser.executeJavaScript("map.setZoom(" + --zoomValue + ")");
            }
        }
    });

    JButton setMarkerButton = new JButton("Set Marker");
    setMarkerButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            browser.executeJavaScript("var myLatlng = new google.maps.LatLng(48.4431727,23.0488126);\n" +
                    "var marker = new google.maps.Marker({\n" +
                    "    position: myLatlng,\n" +
                    "    map: map,\n" +
                    "    title: 'Hello World!'\n" +
                    "});");
        }
    });

    JPanel toolBar = new JPanel();
    toolBar.add(zoomInButton);
    toolBar.add(zoomOutButton);
    toolBar.add(setMarkerButton);

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    frame.add(view, BorderLayout.CENTER);

    frame.add(toolBar, BorderLayout.SOUTH);
    frame.setSize(900, 500);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

    // Provide the correct full path to the map.html file, e.g. D:\\map.html
    browser.loadURL("file:///E:/Programming/map.html");

和我的 map.html 文件:

<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
  var mapProp = {
    center:new google.maps.LatLng(51.508742,-0.120850),
    zoom:5,
    mapTypeId:google.maps.MapTypeId.ROADMAP
  };
  var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
<div id="googleMap" style="width:850px;height:380px;"></div>
</body>

</html>
4

2 回答 2

1

我想这是因为您没有按照https://jxbrowser.support.teamdev.com/support/solutions/articles/9000012874-google-maps的说明中所述为 Google Maps API 提供 API_KEY

请将 API_KEY 字符串替换为您的 Google API KEY 值:

https://maps.googleapis.com/maps/api/js?key= API_KEY &sensor=false

于 2016-03-14T09:57:57.033 回答
0

一旦页面已经加载,您将无法加载 API。

google.maps.event.addDomListener(window, 'load', initialize);

您可以查看一些类似的SOthis以获得更多指导。

于 2016-03-11T14:18:18.567 回答