一、下载worldwindjava
GitHub地址:https://github.com/NASAWorldWind/WorldWindJava/releases。
二、配置开发环境
在eclipse上配置开发环境,新建java工程,工程下新建libs文件夹,将下载好的Worldwind解压出来,在文件根目录下找到gdal.jar、gluegen-rt.jar、gluegen-rt-natives-windows-amd64.jar、jogl-all.jar、jogl-all-natives-windows-amd64.jar、plugin.jar、vpf-symbols.jar、worldwind.jar、worldwindx.jar并复制到libs文件夹下,然后添加到buildpath。
三、引入Worldwind
在项目中引入Worldwind窗体。一个是WorldwindGLCanvas,也就是画布,所有的数据都是在这个画布上展示和浏览。一个是Model,三维的地球模型,包含了多个自带图层。
代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import javax.swing.JFrame;
import javax.swing.JPanel;
import gov.nasa.worldwind.Model;
import gov.nasa.worldwind.WorldWind;
import gov.nasa.worldwind.avlist.AVKey;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
public class Test extends JFrame{
private static final long serialVersionUID = 1L;
private WorldWindowGLCanvas worldWindowGLCanvas;
private Model modelEarth;
private JPanel worldWindPanel;
/**
* 绘制主界面
*/
public Test() {
this.setExtendedState(Frame.MAXIMIZED_BOTH);
this.setTitle("Test");
int width = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
int height = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.worldWindPanel = new JPanel();
this.worldWindPanel.setBounds(0,0, width, height);
Dimension canvasSize = new Dimension(width, height);
this.worldWindowGLCanvas = new WorldWindowGLCanvas();
this.worldWindowGLCanvas.setPreferredSize(canvasSize);
modelEarth = (Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);
this.worldWindowGLCanvas.setModel(modelEarth);
this.worldWindPanel.add(worldWindowGLCanvas, BorderLayout.CENTER);
this.add(worldWindPanel);
}
public static void main(String[] args) {
new Test().setVisible(true);
}
}
运行效果:
四、图层编辑
如果不想要左上角的世界地图和右上角的指南针,添加如下代码,可以移除自带图层中不需要的图层。
Layer compass = worldWindowGLCanvas.getModel().getLayers().getLayerByName("Compass");
Layer worldMapLayer = worldWindowGLCanvas.getModel().getLayers().getLayerByName("World Map");
worldWindowGLCanvas.getModel().getLayers().remove(compassLayer);
worldWindowGLCanvas.getModel().getLayers().remove(worldMapLayer);
运行效果: