[mapguide-users] Defect : Confusion between layer.visible and layer.isDisplayed

Chris Claydon chris.claydon at autodesk.com
Thu Mar 5 16:19:27 EST 2009


The QueryMapFeatures request that gets sent to MapGuide from these functions goes through the same process that is used to render the map, and therefore any layers not visible at the current scale *should* get filtered out anyway. How much of a performance difference do you get when you select a feature?

Regardless of the impact, the current code is wrong and so it would be great if you could create a ticket for this issue. 

Having said that, the code you've included below would actually introduce a new problem, because layers that are not visible in the legend, but are still visible and selectable in the map, will have node.isDisplayed = false. 

I looked through the code to see if there are any other node properties that correspond exactly to the current visibility of the layer and I couldn't find one. However (node.visible && (node.curScale != -1)) seems to give the required value. node.visible reflects whether or not the layer is enabled (e.g. unchecking it in the legend sets the value to false). node.curScale corresponds to the scale range for the layer that is currently active, and it gets set to -1 when the layer is out of visible range.

I hope this all makes sense...

Chris.

-----Original Message-----
From: mapguide-users-bounces at lists.osgeo.org [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Bruno Scott
Sent: Thursday, March 05, 2009 8:14 AM
To: mapguide-users at lists.osgeo.org
Subject: [mapguide-users] Defect : Confusion between layer.visible and layer.isDisplayed


Using fiddler i found something interresting in two mapguide ajax functions
  QueryFeatureInfo (when selecting a feature )
and
  RequestHyperLinkData (when mouse over a feature)

These 2 functions calls GetVisSelLayers or GetVisLayers 
then GetLayers(onlyVisible, onlySelectable)
the DoGetLayers

This function returns the list of all either visible and/or selectable
layers
this is the code
function DoGetLayers(nodes, layers, onlyVisible, onlySelectable)
{
    for(var i=0; i < nodes.length; i++)
    {
        var node = nodes[i];
        if(node.type == 0)
        {
            if(onlyVisible && !node.visible)
                continue;
            if(node.children != null && node.children.length > 0)
                DoGetLayers(node.children, layers, onlyVisible,
onlySelectable);
        }
        else if(node.type == 1)
        {
            if(onlyVisible && !node.visible)
                continue;
            if(onlySelectable && !node.selectable)
                continue;
            layers.push(new Layer(node.legend, node.name, node.objectId));
        }
    }
}
It should be
function DoGetLayers(nodes, layers, onlyVisible, onlySelectable)
{
    for(var i=0; i < nodes.length; i++)
    {
        var node = nodes[i];
        if(node.type == 0)
        {
            if(onlyVisible && !node.isDisplayed)
                continue;
            if(node.children != null && node.children.length > 0)
                DoGetLayers(node.children, layers, onlyVisible,
onlySelectable);
        }
        else if(node.type == 1)
        {
            if(onlyVisible && !node.isDisplayed)
                continue;
            if(onlySelectable && !node.selectable)
                continue;
            layers.push(new Layer(node.legend, node.name, node.objectId));
        }
    }
}

This little defect does not make a big difference on a map like Sheboygan
But mine is Oracle based and has more than 300 layers.
Most of them are eventually visible at a given (low)scale but not displayed
at all.
When i select a feature or i mouse over it, it query the mapguide server
with hundreds of not displayed layers. You bet, things get very slow.

I've made some search on the ajax viewer code and found that this function
is only called by
  QueryFeatureInfo
  RequestHyperLinkData
  selectwithin

Do you aggree that i fill a ticket and a diff patch?

Bruno Scott


-- 
View this message in context: http://n2.nabble.com/Defect-%3A-Confusion-between-layer.visible-and-layer.isDisplayed-tp2430031p2430031.html
Sent from the MapGuide Users mailing list archive at Nabble.com.

_______________________________________________
mapguide-users mailing list
mapguide-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users


More information about the mapguide-users mailing list