[OpenLayers-Users] OpenLayers + MapServer + Own maps showing miniature tiles

Henrik Collin hcollin78 at googlemail.com
Fri Feb 12 03:14:46 EST 2010


Hello,

I am currently trying to build a service that shows a map in a webpage with
OpenLayers. The OpenLayers requests the map data from MapServer by using WMS
and then draws some features in a layer on top of the map data. 

My main problem is that the loaded map shows as a tiny dot in the screen
until I zoom enough. This would be okay if the features would be drawn
correctly on the map but alas they are not.  They are off from the position
thousands of kilometres. My features are in projection EPSG4326 which is
converted to EPSG2393 the map uses. Projections have been setup in both
systems MapServer and OpenLayers. 

The map consists of multiple tiles that have been combined to shapefile with
MapServers shp2img.exe. When I request the map file form the browser it
works perfectly. It returns me the correct piece of the map in the correct
tile size.

Does anyone have any idea what am I doing wrong? This is my first try with
both services OpenLayers and MapServer so I am not quite sure which one is
causing the problems, but as the MapServer returns a correct result when
quering directly my educated guess is that the problem lies in the
OpenLayers side.

I originally tried the OpenLayers side with Google Maps and got that working
ok.

_____________________________________________________________________________________

HTML (In Header):

<script type="text/javascript" src="js/openlayers/OpenLayers.js"></script>
<script type="text/javascript" src="js/proj4js/proj4js.js"></script>
<script type="text/javascript" src="js/proj4js/defs/EPSG2393.js"></script>
<script type="text/javascript" src="js/proj4js/defs/EPSG4326.js"></script>
<script type="text/javascript" src="js/proj4js/defs/EPSG900913.js"></script>

_____________________________________________________________________________________
                                                                                
OPENLAYERS: (This is not a direct copy of the code as the actual code is
written inside multiple MooTools classes and contains a lot of code not
needed in here.)
                                                                                
var mapOptions = {
				projection: new OpenLayers.Projection("EPSG:2393"),
				units: "m",
        // maxResolution: 156543.0339,
	  		maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
20037508.34, 20037508.34)
 }

var x = 23;
var y = 60;
var pos = {
    lat: x,
    lon: y,
    zoom: 6
};

Method from a class responsible for loading the layers and initializing the
map.
loadMap: function() {
    
    // Create map layer
    this.map = new OpenLayers.Map(paneMain, mapOptions);
    this.map.addControl(new OpenLayers.Control.NavToolbar());
    
    
    /*
    this.gphy = new OpenLayers.Layer.Google(
        "Google Physical",
        {type: G_PHYSICAL_MAP, sphericalMercator: true}
    );
    this.map.addLayer(this.gphy);
    */
    
    this.wmsserv = new OpenLayers.Layer.WMS(
            "WMS Server",
           
"http://localhost:591/cgi-bin/mapserv.exe?map=/ms4w/apps/service/wms.map&",
            {
                layers: "Kartta",
                SRS: "EPSG:2393",
                format: "image/png"
            },
            { isBaseLayer: true }
    );
    this.map.addLayer(this.wmsserv);
           
    // Add Vector Layer on top of the map layer
    var vectorStyleMap = new OpenLayers.StyleMap({
        graphicZIndex: 100
    });
    
    this.layerLines = new OpenLayers.Layer.Vector("Line Layer", { styleMap:
vectorStyleMap, rendererOptions: { zIndexing: true } });
    this.map.addLayer(this.layerLines);
    
    // Add layer controls
    selectControl = new OpenLayers.Control.SelectFeature(
       this.layerLines,
        {
            clickout: true, toggle: true,
            multiple: false, hover: false,
            onSelect: this.LineClick,
            onUnSelect: this.LineUnSelect
        }
    );
    this.map.addControl(selectControl);       
    selectControl.activate();

    this.map.events.register("zoomend", this, function(e) {
        this.redrawDots();
    });
    
    // Center the map
    var centerPos = new OpenLayers.LonLat(pos.lon, pos.lat).transform(new
OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:2393"));
    this.map.setCenter(centerPos, this.pos.zoom, false, false);
},

_____________________________________________________________________________________

WMS.MAP (Settings in the MapServer side) 

MAP

  NAME "Service"
  STATUS ON
  SIZE 256 256
  IMAGECOLOR 128 128 192
  # EXTENT 2417774 6720000 2430000 6730000 # Koko kartta
  # EXTENT 2427774 6724000 2429000 6726000 # Zoom
  # EXTENT 3050187.8969 6585228.0377 3761549.0272 7803095.3519
  IMAGETYPE PNG
  UNITS METERS
  SHAPEPATH "maps/"

  PROJECTION
    "init=epsg:2393"
    # "proj=tmerc"
    # "lat_0=0"
    # "lon_0=27"
    # "k=1"
    # "x_0=3500000"
    # "y_0=0"
    # "ellps=intl"
    # "towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964"
    # "units=m"
    # "no_defs"
  END

  WEB
    IMAGEPATH "/ms4w/tmp/ms_tmp/" 
    IMAGEURL "/ms_tmp/"                                   
    TEMPLATE "service.html"
    LOG "service.log"

    METADATA
      "wms_title" "Service"
      "wms_onlineresource"
"http://localhost:591/cgi-bin/mapserv.exe?map=/ms4w/apps/service/wms.map&"
      "wms_srs" "EPSG:4022" 
    END
    
  END
    
  LAYER
    NAME "Kartta"
    METADATA
       "wms_title" "Map layer"
    END
    TYPE RASTER
    STATUS ON
    
    TILEINDEX "testshape.shp"
    
    DUMP TRUE
    PROJECTION
      "init=epsg:2393"
      # "proj=tmerc"
      # "lat_0=0"
      # "lon_0=27"
      # "k=1"
      # "x_0=3500000"
      # "y_0=0"
      # "ellps=intl"
      #
"towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964"
      # "units=m"
      # "no_defs"
    END
       
  END
  
END













-- 
View this message in context: http://n2.nabble.com/OpenLayers-MapServer-Own-maps-showing-miniature-tiles-tp4559876p4559876.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.



More information about the Users mailing list