Well, I think you need the:

        "SphericalMercator": true

But this also looks wrong:

        "projection": {
            "projCode": "EPSG:900913"
        },

This should be:

        projection: "EPSG:900913"

more inline below. I think whoever built the drupal code needs to fix this.

-Steve

On 1/10/2013 3:05 PM, Alexander Kocisky wrote:
Hi Stephen,

thanks for your quick reply, im actually using Drupal Openlayer module
but i've got the options with which the map is created, the code:

...

// Initialize openlayers map
             var openlayers = new OpenLayers.Map(map.id <http://map.id>,
options);
             alert("The map: "+map.id <http://map.id>+" options are:
"+JSON.stringify(options, null, 4));

             // Run the layer addition first
             Drupal.openlayers.addLayers(map, openlayers);

             // Attach data to map DOM object
             $(this).data('openlayers', {'map': map, 'openlayers':
openlayers});

             // Finally, attach behaviors
             Drupal.attachBehaviors(this);

...

The output:

The map: openlayers-map-a47c4de7 options are: {
     "projection": {
         "projCode": "EPSG:900913"
     },

This looks wrong: it should just be:
        "projection": "EPSG:900913",

     "displayProjection": {
         "projCode": "EPSG:4326"
     },

This looks wrong: it should just be:
        "displayProjection": "EPSG:4326",

     "maxExtent": {
         "left": -20037508.34,
         "bottom": -20037508.34,
         "right": 20037508.34,
         "top": 20037508.34
     },
     "units": "m",
     "maxResolution": "auto",
     "controls": [],
     "theme": "/sites/all/modules/openlayers/themes/default_dark/style.css"
}

Here is how drupal adds the layers:

'addLayers': function(map, openlayers) {

     var sorted = [];
     for (var name in map.layers) {
       sorted.push({'name': name, 'weight': map.layers[name].weight,
'baselayer': map.layers[name].baselayer });
     }

     sorted.sort(function(a, b) {
       var x = parseInt(a.weight, 10), y = parseInt(b.weight, 10);
       return ((a.baselayer && x < y) ? -1 : ((b.baselayer || x > y) ? 1
: 0));
     });

     for (var i = 0; i < sorted.length; ++i) {
       var layer,
         name = sorted[i].name,
         options = map.layers[name];

       // Add reference to our layer ID
       options.drupalID = name;
       // Ensure that the layer handler is available
       if (options.layer_handler !== undefined &&
         Drupal.openlayers.layer[options.layer_handler] !== undefined) {
         var layer =
Drupal.openlayers.layer[options.layer_handler](map.layers[name].title,
map, options);

         layer.visibility = !!(!map.layer_activated ||
map.layer_activated[name]);

         if (layer.isBaseLayer === false) {
           layer.displayInLayerSwitcher = (!map.layer_switcher ||
map.layer_switcher[name]);
         }

         if (map.center.wrapdateline === '1') {
           // TODO: move into layer specific settings
           layer.wrapDateLine = true;
         }

         alert("The layer is "+JSON.stringify(map.layers, null, 4));
         openlayers.addLayer(layer);
       }
     }

and here is the result of the layer options:

The layer is {
     "my_wms_layer": {
         "base_url":
"http://gis.site.org:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=MyMap:my_layer";,
         "params": {
             "isBaseLayer": 0,
             "buffer": 2,
             "ratio": 1.5,
             "singleTile": 0,
             "resolutions": [
                 156543.0339,
                 78271.51695,
                 39135.758475,
                 19567.8792375,
                 9783.93961875,
                 4891.969809375,
                 2445.9849046875,
                 1222.9924523438,
                 611.49622617188,
                 305.74811308594,
                 152.87405654297,
                 76.437028271484,
                 38.218514135742,
                 19.109257067871,
                 9.5546285339355,
                 4.7773142669678,
                 2.3886571334839,
                 1.1943285667419,
                 0.59716428337097
             ],
             "projection": {
                 "projCode": "EPSG:900913"
             },

This projection is wrong and should be like above.

             "maxextent": [
                 -20037508,
                 -20037508,
                 20037508,
                 20037508
             ],
             "drupalID": "my_wms_layer",
             "units": "m",
             "maxExtent": {
                 "left": -20037508.34,
                 "bottom": -20037508.34,
                 "right": 20037508.34,
                 "top": 20037508.34
             }
         },
         "options": {
             ...rname": "world-bright",
         "layer_type": "openlayers_layer_type_mapbox",
         "osm": false,
         "baselayer": true,
         "type": "png",
         "resolutions": [
             156543.0339,
             78271.51695,
             39135.758475,
             19567.8792375,
             9783.93961875,
             4891.969809375,
             2445.9849046875,
             1222.9924523438,
             611.49622617188,
             305.74811308594,
             152.87405654297,
             76.437028271484
         ],
         "projection": {
             "projCode": "EPSG:900913"
         },

Same problem here with projection.

         "serverResolutions": [
             156543.0339,
             78271.51695,
             39135.758475,
             19567.8792375,
             9783.93961875,
             4891.969809375,
             2445.9849046875,
             1222.9924523438,
             611.49622617188,
             305.74811308594,
             152.87405654297,
             76.437028271484,
             38.218514135742,
             19.109257067871,
             9.5546285339355,
             4.7773142669678,
             2.3886571334839,
             1.1943285667419,
             0.59716428337097
         ],
         "maxExtent": {
             "left": -20037508,
             "bottom": -20037508,
             "right": 20037508,
             "top": 20037508
         },
         "layer_handler": "MapBox",
         "title": "MapBox World Bright",
         "weight": 0,
         "drupalID": "mapbox_world_bright",
         "isBaseLayer": true
     }
}

so it seems that "SphericalMercator: true" is missing in both the map
and the layer (my_wms_layer), would you say this is the reason of why
the WMS bound box parameter is incorrect when open layer fetches the
different png images of the map?

Thanks !!
Alex


On 9 January 2013 18:14, Gery . <[email protected]
<mailto:[email protected]>> wrote:


     > "Peru WMS",

    cool =)
    
__________________________________________________________________________________________
    Piensa en el medio ambiente - mantenlo en la pantalla. NO lo
    imprimas si NO es necesario.
    Think green - keep it on the screen. Do NOT print if it is NOT
    necessary.
    Denken Sie an die Umwelt- bewahren Sie es auf dem Bildschirm.
    Drucken Sie NICHT, wenn es NICHT notwendig ist.


     > Date: Wed, 9 Jan 2013 17:57:53 -0500
     > From: [email protected] <mailto:[email protected]>
     > To: [email protected]
    <mailto:[email protected]>
     > Subject: Re: [OpenLayers-Users] OpenLayers with 900913 projection
    and drupal OpenLayers module

     >
     > On 1/9/2013 5:49 PM, Alexander Kocisky wrote:
     > > Hi all,
     > >
     > > I've set up a Geoserver/PostGIS infrastructure in order to render a
     > > database of GIS information. Initially i was working with the
    projection
     > > 4326 but when i've installed Drupal + OpenLayers i've realized that
     > > there are almost no tiles with this projection, the way to go
    seems the
     > > projection 900913.
     > >
     > > So i've converted all my gis objects to 900913, verified that i
    could
     > > see the rendered points in the geoserver Layer Preview with
    OpenLayer
     > > and tried to add the WMS layer to my map created with Drupal
    Openlayer
     > > module.
     > >
     > > It apparently works but it fetches a bound box that is wrong,
    in fact if
     > > i modify manually the request urls (from the browser) i get the
    correct
     > > data. I need to understand better how this bounded box works,
    how is it
     > > initially set? i guess that for each png image downloaded there
    is a
     > > specific BBOX parameter, is this done by the Openlayers library?
     > >
     > > I've also explained the issue on the drupal openlayers module but
     > > apparently it was never really tested with WMS 900931 (weird
    right?) .
     > > The module works well with the same configuration and the 4326
     > > projection (http://drupal.org/node/1884422).
     > >
     > > Please let me know if you have any suggestion.
     > > Thanks!!
     > >
     > > Alex
     >
     > Alex,
     >
     > I think you need to post how the OL map and layer objects are
    defined or
     > post a link to your site if it is public.
     >
     > More than likely you have left off something like:
    SphericalMercator: true
     >
     >
     > Here is what I use:
     >
     > map = new OpenLayers.Map('map', {
     > maxResolution: 156543.0339/2,
     > numZoomLevels: 18,
     > units: 'm',
     > maxExtent: new OpenLayers.Bounds(-20037508.34,
     > -20037508.34, 20037508.34, 20037508.34),
     > sphericalMercator: true,
     > projection: epsg900913,
     > displayProjection: epsg4326,
     > controls:[
     > new OpenLayers.Control.LayerSwitcher(),
     > // new OpenLayers.Control.OverviewMap(),
     > new OpenLayers.Control.Permalink('permalink'),
     > new OpenLayers.Control.MouseToolbar(),
     > new OpenLayers.Control.MousePosition(),
     > new OpenLayers.Control.PanZoomBar(),
     > new OpenLayers.Control.Scale(),
     > new OpenLayers.Control.ScaleLine()
     > ]
     > });
     >
     > var wms = new OpenLayers.Layer.WMS(
     > "Peru WMS",
     > "http://server/cgi-bin/mapserv?";,
     > { map: "/u/data/mydata/peru4.map",
     > format: "image/png",
     > layers: "Peru4_4326_WMS"
     > },
     > {
     > sphericalMercator: true,
     > transitionEffect: 'resize',
     > singleTile: true,
     > ratio: 1.0
     > });
     > wms.addOptions({isBaseLayer: true});
     > wms.setVisibility(false);
     > map.addLayer(wms);
     >
     > -Steve
     > _______________________________________________
     > Users mailing list
     > [email protected] <mailto:[email protected]>
     > http://lists.osgeo.org/mailman/listinfo/openlayers-users

    _______________________________________________
    Users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.osgeo.org/mailman/listinfo/openlayers-users



_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to