From: John P. <byh...@gm...> - 2011-01-11 20:38:45
|
OK, furthur experimentation indicates that if I send the map request to geoserver with a different projection then the map is returned ok, but the bbox coordinates have to be in the different projection. So I'll need the projection transform stuff working but these function all seem to do nothing. Do I have to have some other javascripts loaded to get this part of gwt-openlayers working John ---------- Forwarded message ---------- From: John Preston <byh...@gm...> Date: Tue, Jan 11, 2011 at 3:09 PM Subject: Reprojection of wns malyer and tranforming of point does not seem to work. To: gwt...@li... I have a problem getting reprojection of wms layer maps working and I would apprciate if someone could tell me what I'm doing wrong. I have two maps in two different projections and I would like to overlay them. I use the following code to do this. ////////////////////////////////////////////////////////////////////////////////////////// MapOptions mapOptions = new MapOptions(); mapOptions.setNumZoomLevels(10); mapOptions.setProjection("EPSG:3448"); mapOptions.setDisplayProjection(new Projection("EPSG:3448")); mapOptions.setUnits("m"); mapOptions.setMaxExtent(new Bounds(100000, 100000, 900000, 700000)); mapOptions.setAllOverlays(true); mapOptions.setMaxResolutionToAuto(); mapWidget = new MapWidget("100%", "100%", mapOptions); add(mapWidget, new BorderLayoutData(LayoutRegion.CENTER)); Map map = mapWidget.getMap(); // Defining a WMS and adding it to the map WMSParams wmsParams = new WMSParams(); wmsParams.setFormat("image/png"); wmsParams.setLayers("area1"); wmsParams.setIsTransparent(true); wmsParams.setStyles(""); WMSOptions wmsLayerParams = new WMSOptions(); wmsLayerParams.setBuffer(0); wmsLayerParams.setSingleTile(false); wmsLayerParams.setMaxExtent(new Bounds(100000, 100000, 300000, 200000)); wmsLayerParams.setProjection("EPSG:24200"); WMS wmsLayer = new WMS("First map on old projection", "http://localhost:8086/geoserver/wms", wmsParams, wmsLayerParams); // Add layer to open layers map map.addLayer(wmsLayer); // Defining a WMS and adding it to the map wmsParams = new WMSParams(); wmsParams.setFormat("image/png"); wmsParams.setLayers("area2"); wmsParams.setIsTransparent(true); wmsParams.setStyles(""); wmsLayerParams = new WMSOptions(); wmsLayerParams.setBuffer(0); wmsLayerParams.setSingleTile(false); wmsLayerParams.setMaxExtent(new Bounds(500000, 500000, 800000, 700000)); wmsLayerParams.setProjection("EPSG:24200"); WMS wmsLayer = new WMS("Second map in new projection", "http://localhost:8086/geoserver/wms", wmsParams, wmsLayerParams); // Add layer to open layers map map.addLayer(wmsLayer); map.setCenter(new LonLat(400000, 400000)); ////////////////////////////////////////////////////////////////////////////////////////// The two maps hold data for adjacent areas but they are in different projections. I want to be able to set the map display projection to one of the projections, EPSG:3448 for instance, and re-project (on the fly) the other map so I can overlay them. Hence I set the map display projection to EPSG:3448, and when I am creating the wms layer I set the srs of the request to the display projection. However I get an empty map if I do this. When I set the projection of the wms request to the projection of the data it contains then I get the map but it has not been reprojected. I've searched for a simple reprojection example to try and follow but I can't find any. I've also noticed that if I try to tranform coordinates from one projection to another I get no change. When I try the following code the coordinates of the lonlat object remain the same instead of them being offset by about 500000 for the x and y values. LonLat pt = new LonLat(250000, 140000); pt.transform("EPSG:3448", "EPSG:24200"); Do I need to include some extra javascripts to get the projection working. Can anyone help me. John |