I think what you're really after here is that you only want to request one named layer, and you want mapserver to return whichever level of detail is appropriate for the current scale.

The way I do this is just to give all the layers in a "detail set"
the SAME NAME. Try it, it's like magic :-)
Percy

Andrew Wooley wrote:
Dave,

I am not an OpenLayers expert by any means, but as of the 2.4 release (at least), now with RC5, you can add a Mapserver Layer directly. This honors the scale dependencies you have set up in your mapfile and you can have your LOD.

Check out http://trac.openlayers.org/wiki/MappingYourData for a nice tutorial. Make sure your watch the flash presentation. It makes it seem so simple.

Andrew

On 5/30/07, *Dave Weaver* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    I'm playing around with OpenLayers in conjuntion with MapServer.
    What's the best way to have different levels of detail as I zoom in
    on my map?

    At the moment I've done it like this:
    My .map file has one layer per LOD, each using a MINSCALE/MAXSCALE
    directive
    to determine when it's visible.

    But that means I have multiple named layers, so the WMS request made by
    OpenLayers needs to request all layers.

    e.g: (mapfile)

      LAYER
        NAME         lod1
        STATUS       OFF
        TYPE         RASTER
        PROJECTION
          "init=epsg:4326"
        END
        MINSCALE 75000000
        METADATA
            "wms_title"     "lod1"
            "wms_onlineresource"
    "http://example.com/cgi-bin/mapserv?map=map/earth.map&;
    <http://example.com/cgi-bin/mapserv?map=map/earth.map&;>"
            "wms_srs"       "EPSG:4326 EPSG:54004"
        END
        TILEINDEX  "lod1.shp"
        TILEITEM   "location"
      END

      LAYER
        NAME         lod2
        STATUS       OFF
        TYPE         RASTER
        PROJECTION
          "init=epsg:4326"
        END
        MAXSCALE 74999999
        MINSCALE 50000000
        METADATA
            "wms_title"     "lod2"
            "wms_onlineresource"
    " http://example.com/cgi-bin/mapserv?map=map/earth.map&;
    <http://example.com/cgi-bin/mapserv?map=map/earth.map&;>"
            "wms_srs"       "EPSG:4326 EPSG:54004"
        END
        TILEINDEX  "lod2.shp"
        TILEITEM   "location"
      END

      # ... etc ...

    then in the OpenLayers code:

      layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "
    http://example.com/cgi-bin/mapserv?map=map/earth2.map&;
    <http://example.com/cgi-bin/mapserv?map=map/earth2.map&;>", {layers:
    'lod1,lod2,lod3,lod4,lod5'});

    Is there a better way to handle multiple LODs ?

    Many thanks,
    Dave.



--
David Percy
Geospatial Data Manager
Geology Department
Portland State University
http://gisgeek.pdx.edu
503-725-3373

Reply via email to