[Gvsig_english] Issue with layer position when creating new layers

Flavio Pompermaier fla83tn at gmail.com
Wed May 5 16:01:30 CEST 2010


I tied to use your advice About mapContext.beginAtomicEvent() and
mapContext.endAtomicEvent() but it didn't help :(
By the way, thanks for the advice!

2010/5/5 Francisco José Peñarrubia <fpenarru at gmail.com>:
> Hi Flavio.
>
> I didn't test your code, but maybe you are missing
> mapContext.beginAtomicEvent() and mapContext.endAtomicEvent().
>
> I have something like this, and it works:
>
>            mc.getMapContext().beginAtomicEvent();
>            final FLayers mcLayers = mc.getMapContext().getLayers();
>            FLayers newGroup =
> mc.getMapContext().getNewGroupLayer(mcLayers);
>            newGroup.setProjection(mc.getProjection());
>            newGroup.setName(nom);
>
>            for (int i=0; i < shpLayers.size(); i++) {
>                ShpLegend aux = shpLayers.get(i);
>                FLyrVect lyr = (FLyrVect) LayerFactory.createLayer(nom +
> aux.shpName, "gvSIG shp driver",
>                                new File(dirShps.getPath() +
> File.separator + nom+
>                                        aux.shpName + ".shp"),
> mc.getProjection());
>
>                newGroup.addLayer(lyr);
>                loadLegend(lyr, aux.gvlName);
>            }
>            mcLayers.addLayer(newGroup);
>            mcLayers.moveTo(0, mcLayers.getLayersCount()-1);
>            mc.getMapContext().endAtomicEvent();
>
> Hope it helps.
>
> Best regards.
>
> Fran Peñarrubia
> www.scolab.es
>
>
> Flavio Pompermaier escribió:
>> Hi to all,
>> I'm using gvSIG 1.9 revision 1253 and I have some trouble whit layer
>> positioning.
>> I have a list of layer to add on login and, if this layer is not
>> present, I want to add it on the bottom of the toc and not on top as
>> default.
>> However, if I use Flayers.addLayer(0, layer) it is not added at the
>> bottom of the toc..
>> This is the code I use in my project (a simplified version):
>>
>>        // 1 store layer position before addition
>>        for (MyLayer workLayer : workLayers) {
>>               String layerName = workLayer.getLayerNameI();
>>               int position = getLayerPostion(flayers, layerName);
>>               if (position >= 0) {
>>                       layerPositions.put(layerName, position);
>>               }
>>       }
>>
>>         //2 remove layer to add if present and then add
>>       for (MyLayer workLayer : workLayers) {
>>               String layerName = workLayer.getLayerNameI();
>>               /remove layer if it already exists
>>               FLayer alreadyExistingLayer = flayers.getLayer(layerName);
>>               if (alreadyExistingLayer != null) {
>>                       flayers.removeLayer(alreadyExistingLayer);
>>               }
>>               //and substitute with the new generated one
>>               flayers.addLayer(createLayerInView(workLayer, projection));
>>               log.debug("Layer substituted: " + workLayer.getServiceLayerName());
>>       }
>>
>>         // 3 reorder as before removing/adding (point 2)
>>         int numLayers = flayers.getLayersCount() - 1;
>>       for (MyLayer workLayer : workLayers) {
>>               String layerName = workLayer.getLayerNameI();
>>               Integer oldPosition = layerPositions.get(layerName);
>>               int currentPosition = getLayerPostion(flayers, layerName);
>>               if (oldPosition != null) {
>>                       flayers.moveTo(numLayers - currentPosition, numLayers -
>>                         oldPosition.intValue());
>>               }
>>       }
>>
>>
>> and the function getLayerPostion():
>>
>>        private static int getLayerPostion(FLayers flayers, String layerName) {
>>               for (int i = 0; i < flayers.getLayersCount(); i++) {
>>                       if (layerName.equals(flayers.getLayer(i).getName()))
>>                               return i;
>>               }
>>               return -1;
>>       }
>>
>>
>> Any help?
>> _______________________________________________
>> Gvsig_internacional mailing list
>> Gvsig_internacional at listserv.gva.es
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional
>>
>
> _______________________________________________
> Gvsig_internacional mailing list
> Gvsig_internacional at listserv.gva.es
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional
>


More information about the Gvsig_internacional mailing list