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:[EMAIL PROTECTED]>
    *To:* Oliver Christen <mailto:[EMAIL PROTECTED]>
    *Cc:* cartoweb <mailto:[email protected]>
    *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:[EMAIL PROTECTED]>
            *To:* cartoweb <mailto:[email protected]>
            *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
            [email protected]
            http://lists.maptools.org/mailman/listinfo/cartoweb-users

_______________________________________________
Cartoweb-users mailing list
[email protected]
http://lists.maptools.org/mailman/listinfo/cartoweb-users

Reply via email to