X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=gis%2Fplugins%2Forg.argeo.gis.ui.rcp.swing%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fgis%2Fui%2Frcp%2Fswing%2FSwingMapViewer.java;h=32d03c19285d656e6b99a0a3fa9c119c83ed87fa;hb=29e52f028cae17c2918fd3f5c691bce26090e969;hp=b2f21489a06a028574144b321f417a328de9d445;hpb=deacc416c7b87f8f872f00b2882fc83ddbf2e870;p=lgpl%2Fargeo-commons.git diff --git a/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java b/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java index b2f21489a..32d03c192 100644 --- a/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java +++ b/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java @@ -9,6 +9,7 @@ import java.util.Map; import javax.jcr.Node; +import org.argeo.ArgeoException; import org.argeo.geotools.jcr.GeoJcrMapper; import org.argeo.geotools.styling.StylingUtils; import org.argeo.gis.ui.AbstractMapViewer; @@ -21,11 +22,13 @@ import org.geotools.map.DefaultMapContext; import org.geotools.map.DefaultMapLayer; import org.geotools.map.MapContext; import org.geotools.map.MapLayer; +import org.geotools.referencing.CRS; import org.geotools.renderer.lite.StreamingRenderer; import org.geotools.styling.Style; import org.geotools.swing.JMapPane; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.referencing.crs.CoordinateReferenceSystem; /** Map viewer implementation based on GeoTools Swing components. */ public class SwingMapViewer extends AbstractMapViewer { @@ -50,7 +53,6 @@ public class SwingMapViewer extends AbstractMapViewer { versatileZoomTool = new VersatileZoomTool(); mapPane.setCursorTool(versatileZoomTool); mapPane.setBackground(Color.WHITE); - frame.add(mapPane); setControl(embedded); @@ -85,7 +87,31 @@ public class SwingMapViewer extends AbstractMapViewer { public void setAreaOfInterest(ReferencedEnvelope areaOfInterest) { // mapPane.getMapContext().setAreaOfInterest(areaOfInterest); - mapPane.setDisplayArea(areaOfInterest); + CoordinateReferenceSystem crs = mapPane.getMapContext() + .getCoordinateReferenceSystem(); + + ReferencedEnvelope toDisplay; + if (crs != null) + try { + toDisplay = areaOfInterest.transform(crs, true); + } catch (Exception e) { + throw new ArgeoException("Cannot reproject " + areaOfInterest, + e); + } + else + toDisplay = areaOfInterest; + mapPane.setDisplayArea(toDisplay); + } + + public void setCoordinateReferenceSystem(String crs) { + try { + CoordinateReferenceSystem crsObj = CRS.decode(crs); + mapPane.getMapContext().setCoordinateReferenceSystem(crsObj); + mapPane.repaint(); + } catch (Exception e) { + throw new ArgeoException("Cannot set CRS '" + crs + "'", e); + } + } }