[mapserver-users] Creating legend

Fawcett, David David.Fawcett at state.mn.us
Wed Oct 8 14:09:38 EDT 2008


If the layer status is not set to default, you can add it to the URL call e.g. &layer=countries
 
If you want the legend to refresh every time a user pans or zooms, you will want to have code that watches for the moveend event and updates the legend div.  Turns out, the example post that you cited may not be the best way to do it, but I am quite familiar with it...
 
David.

	-----Original Message-----
	From: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Roger André
	Sent: Wednesday, October 08, 2008 12:58 PM
	To: Subha Ramakrishnan
	Cc: mapserver-users at lists.osgeo.org
	Subject: Re: [mapserver-users] Creating legend
	
	
	Hi Subha,
	
	I think for the "mode=legend" to work, you need to change the LAYER status to DEFAULT.  However, you can test the legend function via WMS request without changing the status by using a request similar to this: (linebreaks added for clarity)
	
	http://localhost/cgi-bin/mapserv?map=/var/www/mapfiles/states/states.map
	&service=wms
	&version=%221.1.1%22
	&request=GetLegendGraphic
	&layer=countries
	&styles=
	&width=60
	&height=40
	&format=png
	
	Roger
	--
	
	
	On Tue, Oct 7, 2008 at 11:38 PM, Subha Ramakrishnan <subha at gslab.com> wrote:
	

		Fawcett, David wrote:
		

			Or, just a straight mode=legend request to the CGI if you are using MapServer.  You can pass in your extent, that will manage the scale-dependent layers.
			
			

		Will the map file remain the same for this? I did try using mode=legend in my request and added that to a separate DIV.But the request doesn't seem to be generating any image.
		This is how my map file looks. I've not pasted the entire contents as its too big.
		
		legend
		  status on
		  imagecolor 255 0 0
		  position ul
		 end
		 layer
		  CONNECTIONTYPE postgis
		  name india_states
		  CONNECTION "user=postgres dbname=ibp host=localhost"
		  group world
		  type polygon
		  dump true
		  METADATA
		     "wfs_title" "Factbook Metadata"
		     "gml_include_items" "all"
		     "wms_feature_info_mime_type" "text/html"
		  END
		  template "template.html"
		  projection
		    "init=epsg:4326"
		  end
		  transparency alpha
		  status on
		  data "topology from india_states using unique id using SRID = -1"
		      CLASSITEM "state"
		      CLASS
		              NAME "JAMMU & KASHMIR"
		              EXPRESSION "JAMMU & KASHMIR"
		              STYLE
		                      COLOR 191 191 155
		                      OUTLINECOLOR 000 000 000
		                      #antialias true
		              end
		      end
		    CLASS
		              NAME "HIMACHAL"
		              EXPRESSION "HIMACHAL"
		              STYLE
		                      COLOR 245 226 188
		                      OUTLINECOLOR 000 000 000
		                      #antialias true
		              end
		      end                                   
		And this request is like this as per the example i found here :http://openlayers.org/pipermail/users/2008-September/007495.html
		var legenddiv = document.createElement('div');
		legenddiv.setAttribute('id','legend');
		legenddiv.innerHTML = '<img src = "http://localhost/cgi-bin/mapserv?mode=legend&map='+mapfile+ <http://localhost/cgi-bin/mapserv?mode=legend&map=%27+mapfile+> '"</img>';
		document.getElementById('map').appendChild(legenddiv);
		
		Thanks & regards,
		Subha
		       
		

			David.
			
			   -----Original Message-----
			   *From:* mapserver-users-bounces at lists.osgeo.org
			   [mailto:mapserver-users-bounces at lists.osgeo.org] *On Behalf Of
			   *Roger André
			   *Sent:* Tuesday, October 07, 2008 12:06 PM
			   *To:* Steve Lime
			   *Cc:* mapserver-users at lists.osgeo.org
			   *Subject:* Re: [mapserver-users] Creating legend
			
			   Also, you might want to consider making a separate
			   GetLegendGraphic WMS request and putting the legend in a separate
			   DIV element in your web page. 
			   Just an idea.
			   --
			
			   On Tue, Oct 7, 2008 at 8:22 AM, Steve Lime
			   <Steve.Lime at dnr.state.mn.us <mailto:Steve.Lime at dnr.state.mn.us>>
			   wrote:
			
			       Visit:
			
			        http://www.openlayers.org/dev/examples/example-list.html
			
			       and search for untiled. There's a "WMS Untiled" example you
			       can view the source of. The singleTile option goes in the
			       "options" object as opposed the "params" object. Params get
			       passed to the WMS service, options are handled by OL.
			
			       Steve
			
			       >>> Subha Ramakrishnan <subha at gslab.com
			       <mailto:subha at gslab.com>> 10/07/08 9:58 AM >>>
			       Hi Steve,
			       It would be great if you can give me an example or tell me
			       where it is
			       usually set in OL.
			       Thanks for your help.
			
			       Subha
			
			       Steve Lime wrote:
			       > There's nothing you have to do on the MapServer side. Looks
			       like your OL config is wrong
			       > though. I think 'singleTile' is set in the wrong
			       configuration object, perhaps others are in
			       > the wrong place too.
			       >
			       > Steve
			       >
			       >
			       >>>> Subha Ramakrishnan <subha at gslab.com
			       <mailto:subha at gslab.com>> 10/07/08 1:30 AM >>>
			       >>>>
			       > Hi,
			       >
			       > I am using mapserver 5.0.2 with openlayers.
			       > I've a problem while creating a legend for a map from
			       mapserver.When i
			       > try to overlay the image from the mapserver on openlayers'
			       base map, the
			       > images are rendered in tiles, and every tile has a legend
			       and is limited
			       > by the size of the tile. So, i see lots of legends on the
			       map and only
			       > half of them are visible as it is restricted by the tile size.
			       >
			       > This is my request to mapserver from openlayers
			       >
			       > var mapfile = layer_tablename+'.map';
			       > twms1 = new OpenLayers.Layer.WMS(
			       > layer_tablename,"http://localhost/cgi-bin/mapserv?",
			       > { map: mapfile,
			       >    transparent: 'true', layers:layer_tablename,
			       >    format: 'image/png',
			       >    projection:"EPSG:4326",reproject:false,
			       >    units: "m",
			       >    singleTile: true
			       > },{numZoomLevels : MaxZoomLevel});
			       > map.addLayer(twms1);
			       >
			       > I am using the option of singleTile. Is there any setting to
			       be done in
			       > the map file or mapserver for it render a single tile/single
			       legend per
			       > image?
			       >
			       > Thank you.
			       >
			       > Regards,
			       > Subha
			       >
			       > _______________________________________________
			       > mapserver-users mailing list
			       > mapserver-users at lists.osgeo.org
			       <mailto:mapserver-users at lists.osgeo.org>
			       > http://lists.osgeo.org/mailman/listinfo/mapserver-users
			       >
			       >
			       >
			
			
			       _______________________________________________
			       mapserver-users mailing list
			       mapserver-users at lists.osgeo.org
			       <mailto:mapserver-users at lists.osgeo.org>
			       http://lists.osgeo.org/mailman/listinfo/mapserver-users
			
			
			
			-- 
			This message has been scanned for viruses and
			dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
			believed to be clean.
			------------------------------------------------------------------------
			
			_______________________________________________
			mapserver-users mailing list
			mapserver-users at lists.osgeo.org
			http://lists.osgeo.org/mailman/listinfo/mapserver-users
			 
			



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20081008/c1e28bd6/attachment.html


More information about the mapserver-users mailing list