0

我尝试创建在 JFrame 中显示某些区域的路线图的 Java Swing 桌面应用程序。但是电脑没有连接到互联网,它将在局域网中。地图应该就像我们滚动鼠标一样,我们从地图的高度向下移动。就像放大区域一样。

我试图通过谷歌找出我得到很多论坛链接,但每个链接都显示给我。

  1. 我必须做网络应用程序。
  2. 谷歌不支持“没有互联网”的地图设施。
  3. 我应该使用存储在文件夹中的大量 jpg 来显示enter code here不同高度的地图,这样当我们在 Google 地球应用程序中看到任何地图时,它看起来就像。

我找到了 goworldwind.org 但现在还不清楚。

任何线索/想法我该怎么做?

您好已使用以下程序在 jxbrowser 中显示地图

package dummy;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFactory;

public class GoogleMapDemo {
public static final int MIN_ZOOM = 0;
public static final int MAX_ZOOM = 21;
private static int zoomValue = 4;

public static void main(String[] args) {
final Browser browser = BrowserFactory.create();

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 + ")");
}
}
});

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

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browser.getView().getComponent(), BorderLayout.CENTER);
frame.add(toolBar, BorderLayout.NORTH);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

browser.loadURL("/home/StaticMapDemo/map.html");
//browser.loadURL("http://www.google.com");
    }
}

我有 map.html 文件

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB7J1zsErb9_7jxNu5KU5kIENFObAQEbl0&;sensor=false">
</script>
<script type="text/javascript">
var map;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(48.209331, 16.381302),
zoom: 4
};
map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"/>
</body>
</html>

在运行程序时,我在控制台上遇到错误

Chromium 进程退出代码 127 11:59:16 信息:/tmp/jxbrowser-chromium-31.0.1650.57.8/jxbrowser-chromium:加载共享库时出错:libexpat.so.1:无法打开共享对象文件:没有这样的文件或线程“主”com.teamdev.jxbrowser.chromium.BrowserException 中的目录异常:无法创建浏览器。在 com.teamdev.jxbrowser.chromium.BrowserFactory.create(Unknown Source) at com.teamdev.jxbrowser.chromium.BrowserFactory.create(Unknown Source) at com.teamdev.jxbrowser.chromium.BrowserFactory.create(Unknown Source) at dummy .GoogleMapDemo.main(GoogleMapDemo.java:25) 原因:com.teamdev.jxbrowser.chromium.internal.ipc.IPCException:IPC 进程退出。退出代码:127 at com.teamdev.jxbrowser.chromium.internal.ipc.k.run(Unknown Source) at java.lang.Thread.run(Thread.java:744) 11:59:16 信息:

如果是,我会朝着正确的方向在独立 PC 上的 Swing 应用程序中显示静态地图,然后请帮助

4

1 回答 1

3

如果我理解正确的问题,您正在寻找可以在您的应用程序中离线使用的世界地图?能够做到这一点是有问题的,因为世界地图会非常大,而且我认为作者不会允许您下载整个内容的世界地图。

但是,如果您只满足于一张世界地图,也许这个网站可以提供帮助:http ://www.openstreetmap.org/ 。他们提供了一个开源世界地图,如果您查看导出选项卡,您可以找到有关如何获取可下载内容以供离线使用的信息。

如果您正在寻找具有在此地图上移动和缩放功能的代码示例,我建议您尝试自己编写它并在遇到任何代码特定问题时创建一个新问题。

于 2014-07-20T14:47:21.183 回答