GeoTools-Swing显示原理
2016年1月29日
2016年2月3日修正JMapPane继承层次
一般工程中不推荐使用。
FileDataStore ds =FileDataStoreFinder.getDataStore(newURL("file://D:/Data/shapefiles/states.shp"));
SimpleFeatureStore sfs =(SimpleFeatureStore) ds.getFeatureSource();
Style style =SLD.createSimpleStyle(sfs.getSchema());
Layer layer = newFeatureLayer(sfs,style);
MapContent map = new MapContent();
map.setTitle("GtDemoXX");
map.addLayer(layer);
JMapFrame mf = new JMapFrame(map);
mf.setBounds(0, 0, 800, 600);
mf.enableLayerTable(true);
mf.enableStatusBar(true);
mf.enableTool(Tool.PAN);
mf.setVisible(true);
package lee;
importjava.io.IOException;
importjava.net.URL;
import org.geotools.data.FileDataStore;
importorg.geotools.data.FileDataStoreFinder;
importorg.geotools.data.simple.SimpleFeatureStore;
importorg.geotools.map.FeatureLayer;
importorg.geotools.map.Layer;
importorg.geotools.map.MapContent;
importorg.geotools.styling.SLD;
importorg.geotools.styling.Style;
importorg.geotools.swing.JMapFrame;
importorg.geotools.swing.JMapFrame.Tool;
public class Main{
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
FileDataStore ds =FileDataStoreFinder.getDataStore(newURL("file://D:/Data/shapefiles/states.shp"));
SimpleFeatureStore sfs =(SimpleFeatureStore) ds.getFeatureSource();
MapContent map = new MapContent();
map.setTitle("GtDemoXX");
Style style =SLD.createSimpleStyle(sfs.getSchema());
Layer layer = newFeatureLayer(sfs,style);
map.addLayer(layer);
JMapFrame mf = new JMapFrame(map);
mf.setBounds(0,0, 800, 600);
mf.enableLayerTable(true);
mf.enableStatusBar(true);
mf.enableTool(Tool.PAN);
mf.setVisible(true);
}
}
JMapFrame
-|JMapPane
--|MapContent
---|Layer
----|Style
----|FeatureStore
-|JToolBar
-|StatusBar
-|MapLayerTabale
双缓冲绘制:drawLayers()使用baseImage作为画布,将所有要素绘制在其上,再在paintComponent()中绘制到窗口。
绘制到缓冲区:drawLayers(),绘制到缓冲区。
缓冲区绘制到GUI:paintComponent()将缓冲区绘制到GUI。
显示隐藏控制:onLayerItemClicked()检查是否选中显示。
图层管理器:enableLayerTable(true)。
工具栏:enableToolBar(true)。
工具:enableTool(Tool.PAN)。将覆盖enableToolBar()设置。
状态栏:enableStatusBar(true)。
显示状态:setVisibale(true)。
默认显示:showMap(map),静态函数,默认创建JMapFrame实例并初始化各种参数。
final JMapFrame frame = newJMapFrame(content);
frame.enableStatusBar(true);
frame.enableToolBar(true);
frame.initComponents();
frame.setSize(800, 600);
frame.setVisible(true);
示例:选择图层样式。
package lee;
import java.io.IOException;
import java.net.URL;
import org.geotools.data.FileDataStore;
importorg.geotools.data.FileDataStoreFinder;
importorg.geotools.data.simple.SimpleFeatureStore;
importorg.geotools.map.FeatureLayer;
importorg.geotools.map.Layer;
importorg.geotools.map.MapContent;
import org.geotools.styling.Style;
importorg.geotools.swing.JMapFrame;
importorg.geotools.swing.JMapFrame.Tool;
importorg.geotools.swing.styling.JSimpleStyleDialog;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileDataStore ds = FileDataStoreFinder.getDataStore(newURL("file://D:/Data/shapefiles/states.shp"));
SimpleFeatureStore sfs = (SimpleFeatureStore)ds.getFeatureSource();
MapContent map = new MapContent();
map.setTitle("GtDemoXX");
Style style =JSimpleStyleDialog.showDialog(null,sfs.getSchema());
Layer layer = new FeatureLayer(sfs,style);
map.addLayer(layer);
JMapFrame mf = new JMapFrame(map);
mf.setBounds(0, 0, 800, 600);
mf.enableLayerTable(true);
mf.enableStatusBar(true);
mf.enableTool(Tool.PAN);
mf.setVisible(true);
}
}
数据源向导:JDataStoreWizard。
参数向导:JParameterLisWizard。
向导基类:JWizard。