[fusion-users] Problem with layer hiding and showing.

Tómas Guðmundsson tomas at snertill.is
Wed Aug 6 11:20:26 EDT 2008


Thank you for that Brian.

 

But I managed to finally solve this problem. I'm not sure if anyone else has countered it but at least, calling layer.show for many layers, that is wanting to display many layers at one time resulted in faulty behavior and not all layers were shown. So on line 879  in Mapguide.js (fusion/Mapguide/Mapguide.js) I added this function:

 

                /** function : sneShowLayers()

                  * This function takes in an array of layers

                  * so that multiple layers can be displayed at once

                  * instead of just one at a time

                  */

                sneShowLayers: function(layers, noDraw) {

                                for (var i = 0; i < layers.length; i++) {

                                                this.processLayerEvents(layers[i], true);

                                                this.aShowLayers.push(layers[i].uniqueId);

                                }

iif (!noDraw) {

 this.drawMap();

                                }                              

                },

 

                /** function : sneHideLayers()

                  * This function takes in an array of layers

                  * so that multiple layers can be hidden at once

                  * instead of just one at a time

                  */

                sneHideLayers: function( layers, noDraw ) {

                                for (var i = 0; i < layers.length; i++) {

                                                this.processLayerEvents(layers[i], false);

                                                this.aHideLayers.push(layers[i].uniqueId);

                                }

                if (!noDraw) {

                                                 this.drawMap();

                                 }

 },

                

Very similar to the showLayer function it has been altered to take in an array of layers instead of just a single array. This way they will all be pushed into the array that will be shown for the next draw of the map. So to fully allow for let's say displaying all layers or hiding them all you have to traverse through the layer tree / layer legend and add every layer to a temporary array and then send it to this function  with "map.sneHideLayers(layersToHideArray)" and / or "map.sneShowLayers(layersToShowArray)". Hope this helps as most people out there.

 

Kind regards,

Tómas.

 

From: Berdel, Brian [mailto:brian.berdel at mcmtrans.com] 
Sent: 6. ágúst 2008 14:46
To: Tómas Guðmundsson; Kenneth Skovhede, GEOGRAF A/S
Cc: fusion-users at lists.osgeo.org
Subject: RE: [fusion-users] Problem with layer hiding and showing.

 

Here is code to show a layer (just replace layerName)

 

    var mapWidget = Fusion.getWidgetById('Map');

    var layer = mapWidget.aMaps[0].getLayerByName(layerName);

    layer.show();

 

Brian 

 

From: fusion-users-bounces at lists.osgeo.org [mailto:fusion-users-bounces at lists.osgeo.org] On Behalf Of Tómas Guðmundsson
Sent: Wednesday, August 06, 2008 10:18 AM
To: Kenneth Skovhede, GEOGRAF A/S
Cc: fusion-users at lists.osgeo.org
Subject: RE: [fusion-users] Problem with layer hiding and showing.

 

Thanks. 

 

I am trying to use map.showLayers() but I'm not sure what parameters it needs.

 

Does anyone know where the definition of layer.show() and layer.hide() as well as

map.showLayers() and map.hideLayers().

 

Regards,

Tómas.

 

From: Kenneth Skovhede, GEOGRAF A/S [mailto:ks at geograf.dk] 
Sent: 6. ágúst 2008 13:47
To: Tómas Guðmundsson
Cc: Mike Adair; fusion-users at lists.osgeo.org
Subject: Re: [fusion-users] Problem with layer hiding and showing.

 

I have no idea how to do this in fusion, but you will likely have to run through the layer list when doing a "layer.show()".
I think there is a call that updates the map without returning the image. You can use that, but it will require multiple server calls over http.

Regards, Kenneth Skovhede, GEOGRAF A/S



Tómas Guðmundsson skrev: 

Thanks Kenneth,

 

I'm trying to figure it out how I put multiple GUIDS into the mapagent request.

Only way I know how to do it is with layer.show(). I'll look more into it but if you

Have it on the top of your head, any info would be great thanks.

 

Regards,

Tómas.

 

From: Kenneth Skovhede, GEOGRAF A/S [mailto:ks at geograf.dk] 
Sent: 6. ágúst 2008 10:57
To: Tómas Guðmundsson
Cc: Mike Adair; fusion-users at lists.osgeo.org
Subject: Re: [fusion-users] Problem with layer hiding and showing.

 

the "ShowLayers" parameter in the "GETMAPIMAGE" call, can take multiple GUIDs, so you should send:
SHOWLAYERS=118e0096-0000-1000-8000-001b2418ab2d,1192c52c-0000-1000-8000-001b2418ab2d,119062dc-0000-1000-8000-001b2418ab2d

Regards, Kenneth Skovhede, GEOGRAF A/S



Tómas Guðmundsson skrev: 

Mike, all.
 
With some debugging this is what I find:
 
console.log('showing :', group.layers[j], ' - ', group.layers[j].layerName);
showing : Object uniqueId=118e0096-0000-1000-8000-001b2418ab2d - HV_loki
showing : Object uniqueId=1192c52c-0000-1000-8000-001b2418ab2d - HV_brunnar
showing : Object uniqueId=119062dc-0000-1000-8000-001b2418ab2d - HV_lagnir
 
This is normal, this is what it should do. And this is printed out when each layer 
calls a method "layer.show()". Now, there is only one mapagent call that displays 
this.
 
clientagent    Fusion Viewer
showLayers     119062dc-0000-1000-8000-001b2418ab2d
operation      GETMAPIMAGE
 
And evidently on my map, the only layer that get's displayed is HV_lagnir. If I change 
the order, the last one always appears. However, the legend and "group.layers[j].visible" 
all result in true. It would be kind of silly to wait for 3 images to display 3 layers, 
so I'm wondering how this can be solved. 
 
Regards,
Tómas
 
-----Original Message-----
From: fusion-users-bounces at lists.osgeo.org [mailto:fusion-users-bounces at lists.osgeo.org] On Behalf Of Tómas Guðmundsson
Sent: 6. ágúst 2008 09:05
To: Mike Adair
Cc: fusion-users at lists.osgeo.org
Subject: RE: [fusion-users] Problem with layer hiding and showing.
 
Mike,
 
I'm afraid that all I found was the 'showlayers' parameter. And it 
was some kind of a hash,
 
clientagent    Fusion Viewer
showLayers     0f682be6-0000-1000-8000-001b2418ab2d
operation      GETMAPIMAGE
 
I don't quite know how to decrypt that but any help would be appreciated.
 
F.y.i. this is the kind of hash that would be correct with the layers
appropriately displayed.
 
clientagent    Fusion Viewer
showLayers     0f65c98c-0000-1000-8000-001b2418ab2d
operation      GETMAPIMAGE
 
The delta is only in the first part.
 
Regards,
Tómas.
 
-----Original Message-----
From: Mike Adair [mailto:madair at dmsolutions.ca] 
Sent: 5. ágúst 2008 19:20
To: Tómas Guðmundsson
Cc: fusion-users at lists.osgeo.org
Subject: Re: [fusion-users] Problem with layer hiding and showing.
 
Tomas,
 
You should check the value of the 'showlayers' and 'hidelayers' 
parameters in the sequence of mapagent calls to GETMAPIMAGE. Those are 
the parameters that turn layers on or off. If they are what you are 
expecting, then it's possible that there is a problem with specifying 
those params, e.g. they should be comma-separated and they are not, or 
vice versa.
 
Mike
 
Tómas Guðmundsson wrote:
  

	Sorry about that. Everything about "If I do nothing else but reload 
	the map (i.e. pan the map, zoom or refresh it) the correct layers are 
	displayed on the map (all 3 or none at all).
	 
	So I figure this has something to do with timing or something like 
	that, of the fetching of the map itself?"
	 
	Is wrong. So ignore that.
	 
	Rgds.
	 
	Tómas
	 
	*From:* fusion-users-bounces at lists.osgeo.org 
	[mailto:fusion-users-bounces at lists.osgeo.org] *On Behalf Of *Tómas 
	Guðmundsson
	*Sent:* 5. ágúst 2008 13:36
	*To:* fusion-users at lists.osgeo.org
	*Subject:* [fusion-users] Problem with layer hiding and showing.
	 
	Hi all.
	 
	I currently have function that I am using that systematically goes 
	through an array it's passed and walks through the layer legend to see 
	if it finds a layer. So for every layername in a layerarray, I check 
	if that layer exists and then if the checkbox is checked I show it, 
	else I hide it. Now I've been debugging this and for an array of 3 
	layers (this also happens for layers more than 1), I get 3 times the 
	debug message "showing layer", when I check the checkbox again I get 
	the debug message "hiding layer" 3 times as well.
	 
	So I know this is working properly, however Mapguide Server does not 
	think so. Or at least the images I get back from the server are 
	missing one layer (the first one, every time). So according to the 
	legend all 3 layers are visible. However, the map shows everyone 
	except the first one. Now I figured this was weird, especially since 
	when I try to hide them, they all are hidden except the first one 
	which is now visible. And now for the final twist.
	 
	If I do nothing else but reload the map (i.e. pan the map, zoom or 
	refresh it) the correct layers are displayed on the map (all 3 or none 
	at all).
	 
	So I figure this has something to do with timing or something like 
	that, of the fetching of the map itself?
	 
	Please let me know if this is not clear to you and I'll try to explain 
	better, but I find it weird I can not hide more than 2 layers at a time.
	 
	Kind regards,
	 
	Tómas
	 
	------------------------------------------------------------------------
	 
	_______________________________________________
	fusion-users mailing list
	fusion-users at lists.osgeo.org
	http://lists.osgeo.org/mailman/listinfo/fusion-users
	  
	    

_______________________________________________
fusion-users mailing list
fusion-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/fusion-users
_______________________________________________
fusion-users mailing list
fusion-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/fusion-users
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/fusion-users/attachments/20080806/eafb3123/attachment-0001.html


More information about the fusion-users mailing list