package org.geotoolkit.pending.demo.rendering.customgraphicbuilder; import org.apache.sis.storage.DataStoreException; import org.geotoolkit.data.FeatureCollection; import org.geotoolkit.data.FeatureStore; import org.geotoolkit.data.query.QueryBuilder; import org.geotoolkit.factory.FactoryFinder; import org.geotoolkit.factory.Hints; import org.geotoolkit.gui.swing.render2d.JMap2D; import org.geotoolkit.gui.swing.render2d.control.JNavigationBar; import org.geotoolkit.gui.swing.render2d.decoration.JClassicNavigationDecoration; import org.geotoolkit.image.io.plugin.WorldFileImageReader; import org.geotoolkit.map.CoverageMapLayer; import org.geotoolkit.map.MapBuilder; import org.geotoolkit.map.MapContext; import org.geotoolkit.map.MapLayer; import org.geotoolkit.pending.demo.Demos; import org.geotoolkit.style.MutableStyle; import org.geotoolkit.style.MutableStyleFactory; import javax.swing.*; import java.awt.*; import java.io.File; import java.io.Serializable; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import org.geotoolkit.storage.DataStores; public class GraphicBuilderDemo { private static final MutableStyleFactory SF = (MutableStyleFactory) FactoryFinder.getStyleFactory( new Hints(Hints.STYLE_FACTORY, MutableStyleFactory.class)); public static void main(String[] args) throws Exception { Demos.init(); final MapContext context = createContext(); final JMap2D jmap = new JMap2D(); final JNavigationBar navBar = new JNavigationBar(jmap); jmap.getContainer().setContext(context); jmap.addDecoration(new JClassicNavigationDecoration(JClassicNavigationDecoration.THEME.CLASSIC)); jmap.getCanvas().setVisibleArea(context.getBounds()); jmap.getCanvas().setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //display map. final JFrame frm = new JFrame(); final JPanel panel = new JPanel(new BorderLayout()); panel.add(BorderLayout.CENTER,jmap); panel.add(BorderLayout.NORTH,navBar); frm.setContentPane(panel); frm.setSize(800, 600); frm.setLocationRelativeTo(null); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setVisible(true); } private static MapContext createContext() throws DataStoreException, URISyntaxException { WorldFileImageReader.Spi.registerDefaults(null); //create a map context final MapContext context = MapBuilder.createContext(); //create a feature layer Map<String,Serializable> params = new HashMap<String,Serializable>(); params.put( "path", GraphicBuilderDemo.class.getResource("/data/weather/stations2.shp").toURI() ); FeatureStore store = (FeatureStore) DataStores.open(params); FeatureCollection fs = store.createSession(true).getFeatureCollection(QueryBuilder.all(store.getNames().iterator().next())); MutableStyle style = SF.style(); MapLayer layer = MapBuilder.createFeatureLayer(fs, style); layer.setDescription(SF.description("stations", "")); layer.setName("stations"); //create a coverage layer File cloudFile = new File(GraphicBuilderDemo.class.getResource("/data/coverage/clouds.jpg").toURI()); final CoverageMapLayer coverageLayer = MapBuilder.createCoverageLayer(cloudFile); //set our graphic builder layer.graphicBuilders().add(new LinksGraphicBuilder()); //add all layers in the context context.layers().add(coverageLayer); context.layers().add(layer); return context; } }