[mapguide-internals] fusion legend and sprited legend images

Jason Birch jason at jasonbirch.com
Fri Dec 11 16:46:39 EST 2009


Would it make more sense to generate the image strip as part of the map
creation (or a separate step after) and save it as a resource attached to
the MapDefinition?  And, if it doesn't exist, go back to non-sprited legend
handling?

I see no reason why both this optimization and delay-loading the image
resources could not both be done though.

Jason

2009/12/10 Walt Welton-Lair <walt.welton-lair at autodesk.com>

> Hi Paul,
>
> I was looking at your email and fusion ticket 131 (
> http://trac.osgeo.org/fusion/ticket/131), and I have a question / concern.
>  Making a single request to generate an image strip containing all legend
> images is certainly much faster than making individual requests for the
> images, but it has the drawback that *all* images for *all* layers need to
> be initially generated.  This alone can take considerable time for maps
> contains many layers.  There are users that have maps containing 500+
> layers, and many of the those layers are themed.  So ultimately you might
> end up having to generate 1000's of legend images in the image strip.
>
> In MapGuide a fix was made this summer to improve legend rendering
> performance in basic layouts (non-fusion).  This was for ticket 1023 (
> https://trac.osgeo.org/mapguide/ticket/1023).  The approach used there was
> different: legend images are only requested for layers which are visible,
> i.e. for top-level layers or for layers whose parent groups are all
> expanded.  If a layer has a collapsed parent group, then those images are
> only requested when the user expands that group.
>
> For any decent map containing 500+ layers, the bulk of these layers would
> be organized into groups, most of which would initially be collapsed.  So
> the number of initial legend image requests ends up being reasonable with
> the MapGuide approach.  But in the case of the fusion mechanism, my
> understanding is that all images would have to be generated up front.  Or
> can we do something similar to MapGuide?
>
> Walt
>
>
> -----Original Message-----
> From: mapguide-internals-bounces at lists.osgeo.org [mailto:
> mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Paul Spencer
> Sent: Thursday, October 08, 2009 1:06 PM
> To: MapGuide Internals Mail List
> Subject: [mapguide-internals] fusion legend and sprited legend images
>
> I've been working on implementing http://trac.osgeo.org/fusion/ticket/131
>  which allows for the possibility of generating a sprite containing
> all the legend icons and thus eliminating the individual calls to
> generate legend icons for each layer/class.  This is now implemented
> and working for MapServer and the wiring is in place for it to work
> with MapGuide.
>
> This code provides a big apparent performance boost for maps with lots
> of layers/themed layers by using a single image for all (or most)
> legend icon images and using the CSS sprite technique for positioning
> the image such that the correct sub-image is visible for the
> appropriate layer/class/scale range.
>
> If there is interest in having this feature supported for MapGuide
> maps, I need some help from MapGuide gurus to modify fusion/Layers/
> MapGuide/php/LoadScaleRanges.php to do the following:
>
> 1) create an image that contains all the icons for each layer/class/
> scale range combination
>
> * The image can be organized either vertically or horizontally
> * the individual images need to be the same size within the strip
>
> 2) save the image to a web-accessible location and add the url and
> size of each icon to the output json object, i.e.
>
> "icons_url":"http:\/\/localhost\/ms_tmp\/4ace0feb_1a23_0.png",
> "icons_width":18,
> "icons_height":12
>
> 3) each scale range that has an image in the strip needs to add to its
> json representation values for icon_x and icon_y which are the offsets
> into the image that the icon can be found at
>
> If a scale range doesn't have icon_x/_y then the legend will retrieve
> the legend image using the existing mechanism
>
> There is php code in MapServer's LoadScaleRanges.php which can do the
> image manipulation to create the strip etc, just need to figure out
> how to get MapGuide to generate the individual icons.
>
> I am willing to work with someone on this code but I need a MapGuide-
> savvy developer to figure out how to make the individual icons
>
> Cheers
>
> Paul
> __________________________________________
>
>    Paul Spencer
>    Chief Technology Officer
>    DM Solutions Group Inc
>    http://research.dmsolutions.ca/
>
> _______________________________________________
> mapguide-internals mailing list
> mapguide-internals at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
> _______________________________________________
> mapguide-internals mailing list
> mapguide-internals at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>


More information about the mapguide-internals mailing list