[Cartoweb-users] Show layers in a defined order

Simon ORTET simon.ortet at silogic.fr
Tue Oct 9 10:40:50 EDT 2007


Thanks! It works

Oliver Christen a écrit :
> mmm, maybe you can trigger the layer selection by using the filter 
> layer_select=layer_to_select_1,layer_to_select_2,... at the same time 
> you do the layer reorder call.
> if im not wrong, the filter will trigger the layer selection before 
> layerReorder is called, meaning the layers *should* be in 
> selectedMsLayerIds
>  
> regards
> Oliver
>
>     ----- Original Message -----
>     *From:* Simon ORTET <mailto:simon.ortet at silogic.fr>
>     *To:* Oliver Christen <mailto:oliver.christen at camptocamp.com>
>     *Cc:* cartoweb <mailto:cartoweb-users at lists.maptools.org>
>     *Sent:* Tuesday, October 09, 2007 10:25 AM
>     *Subject:* Re: [Cartoweb-users] Show layers in a defined order
>
>     Hi Oliver
>
>     On line 478 I have : $this->orderedMsLayerIds[] =
>     $this->selectedMsLayerIds[$id];
>     Cartoweb can't find the $id index in the selectedMsLayerIds
>     collection.
>     I made a print_r of the selectedMsLayerIds collection and i miss a
>     layer that i checked by javascript /chargeVue() /function. So i
>     assumed that Cartoweb needs first a
>     /CartoWeb.trigger('Layers.LayerShowHide');/ call to gather the
>     layers checked in the tree and update its collection. And only
>     then, i can make the CartoWeb.trigger('LayerReorder.Apply'); to
>     reorder these layers.
>
>     The problem is that i want to do that in only 1 ajax call. I'd
>     like to avoid writing a new plugin. What could you advise me?
>
>     Thanks for your help.
>     Simon Ortet
>     Silogic
>
>     Oliver Christen a écrit :
>
>         what do you have at line 478 of your ClientLayerReorder.php file?
>         I only see a comment at that line
>          
>         regards
>         Oliver
>
>             ----- Original Message -----
>             *From:* Simon ORTET <mailto:simon.ortet at silogic.fr>
>             *To:* cartoweb <mailto:cartoweb-users at lists.maptools.org>
>             *Sent:* Monday, October 08, 2007 10:15 AM
>             *Subject:* [Cartoweb-users] Show layers in a defined order
>
>             Hi everyone.
>
>             I'm trying to do a 2 in 1 action with Cartoweb: Show some
>             layers in a special order. So it means i have to check
>             some layers in the layers tree and reorder them. Finally i
>             make the ajax call to make Cartoweb apply the changes.
>
>             The problem is Cartoweb seems not to know the layers i
>             just checked. Here's the error message.
>
>             version: 3.3.0 [$Revision: 1.2 $]
>             class:   CartocommonException
>             message:   Error [8, Undefined index:  1, /opt/cartoweb/cartoweb3/projects/aeag/plugins/layerReorder/client/ClientLayerReorder.php, 478]
>                 
>
>
>             So here's the function i made to do this.
>
>                 /function chargeVue() {    /
>                 /    // Here i get the layers i need to show in a
>                 field of my form/
>                 /    for (var i=0; i<$('selectVue').options.length;
>                 i++) {/
>                 /      if ($('selectVue').options[i].selected ) {/
>                 /        selectione = $('selectVue').options[i].value;/
>                 /      }/
>                 /    }     /
>                 /    /
>                 /    // Here i check the layers i got in the layer tree/
>                 /    var tabSel = $('vue_'+selectione).value.split(";");/
>                 /    var tabOrdre = new Array();/
>                 /    var celts =
>                 $('layersroot').getElementsByTagName('input');/
>
>                 /    for (var j = 0; j < celts.length; j++) {/
>                 /        if (!celts[j].checked &&
>                 inArray(tabSel,celts[j].value)) {/
>                 /            celts[j].checked = true;/
>                 /            // Here i store the order of the layers
>                 in the layers tree/
>                 /            tabOrdre.push(celts[j].value);/
>                 /        }else/
>                 /            celts[j].checked = false;/
>                 /    }/
>                 /    /
>                 /    // Here i fill an array with the new layers order/
>                 /    var tabNewOrdre = new Array();/
>                 /    for (j = 0; j < tabSel.length; j++) {/
>                 /        // Ajoute l'indice de la couche dans tabOrdre/
>                 /       
>                 tabNewOrdre.push(indexInArray(tabOrdre,tabSel[j]));/
>                 /    }/
>                 /    $('layersReorder').value = tabNewOrdre.join(",");/
>                 /    /
>                 /    // Here i update the map/
>                 /    CartoWeb.trigger('Layers.LayerShowHide');/
>                 /}/
>
>
>
>
>             *Is there a way to achieve this without making 2 ajax
>             calls (one to check the layers, the other to order them)?
>
>             *Thanks for your help
>
>             Simon Ortet
>             Silogic
>             ------------------------------------------------------------------------
>             _______________________________________________
>             Cartoweb-users mailing list
>             Cartoweb-users at lists.maptools.org
>             http://lists.maptools.org/mailman/listinfo/cartoweb-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20071009/8318de55/attachment.html


More information about the Cartoweb-users mailing list