[OpenLayers-Users] Magnifier window solved

Steve.Toutant at inspq.qc.ca Steve.Toutant at inspq.qc.ca
Fri Feb 5 15:25:05 EST 2010


solved using clone()
Thanks Alexandre,
Steve

for(i in overlays)
        {
                var oOriginalLayer = overlays[i];

                // add the original layer to the 1st map
                map.addLayer(oOriginalLayer); 

                // create the clone layer, reference it to its original 
and add it to the second map
                var oClonedLayer = oOriginalLayer.clone();
                oOriginalLayer.cloneLayer = oClonedLayer;
                ov_map.addLayer(oClonedLayer);

                // register the 'visibilitychanged' on the original layer
                oOriginalLayer.events.register('visibilitychanged', 
oOriginalLayer, function()
                                {
                                         // when this function is called, 
'this' is the oOriginal layer
                                         // that had its visibility 
changed and since it has a reference
                                         // to its clone, we simply use it 
direclty 
 this.cloneLayer.setVisibility(this.getVisibility());
                                });
        } 





Alexandre Dube <adube at mapgears.com> 
05/02/2010 11:40 AM

A
Steve.Toutant at inspq.qc.ca
cc
users at openlayers.org, users-bounces at openlayers.org
Objet
Re: [OpenLayers-Users] Magnifier window








Steve,

Steve.Toutant at inspq.qc.ca wrote:
>
> Alexandre, i don't understand want you mean by
> "and attach it to the original layer ( layer.clonedLayer = 
> myCloneLayer )"
> Do you think that could help with the length returned by 
> ov_map.getLayersByName(this.name)
The 2nd option is : do not use ov_map.getLayersByName(this.name). 
Instead, when creating your myCloneLayer object, make a reference to it 
to its original layer : layer.cloneLayer = myCloneLayer.

Alexandre


> thanks
>
> Steve
>
>
>
>
> *Alexandre Dube <adube at mapgears.com>@openlayers.org*
> Envoyé par : users-bounces at openlayers.org
>
> 05/02/2010 09:43 AM
>
> 
> A
>                Steve.Toutant at inspq.qc.ca
> cc
>                users at openlayers.org
> Objet
>                Re: [OpenLayers-Users] Magnifier window
>
>
>
> 
>
>
>
>
>
>
>
> Steve,
>
>  You could try (pseudo-code):
>
> For each layer
>   Clone it, add it to ov-map and attach it to the original layer ( 
> layer.clonedLayer = myCloneLayer )
>   Register a visibilitychange event to a onVisibilityChanged function
>
>  onVisibilityChanged: function(event)
>    this.clonedLayer.setVisibility(this.visibility())
>
> Regards,
>
> Alexandre
>
>
> Alexandre Dube wrote:
> > Steve,
> >
> >   Instead of relying on the layer's position in the layers array, 
> try to
> > use the following the getLayersByName method (see in my first reply). 
> > Tell me if that worked.
> >
> > Alexandre
> >
> >
> > Steve.Toutant at inspq.qc.ca wrote:
> > 
> >> Almost done....Amasing how things are easy to do with OL.
> >>
> >> I have a wms layers array, "overlays[]"
> >> I use this code to create the layers array of the overview map and to
> >> define the visibilitychanged event.
> >> var addLayersToMap = function()
> >> { 
> >> for( i in overlays )//overlays contains my wms layers
> >> {
> >>         map.addLayer( overlays[i] );
> >>         ov_overlays[i] = overlays[i].clone();
> >>         ov_map.addLayer( ov_overlays[i] );
> >>
> >>         //Ajoute un listener au niveau de la carte principal pour
> >> gérer l'affichage sur la ov_map
> >>         overlays[i].events.on(
> >>         {
> >>                 'visibilitychanged': function(event)
> >>                 {
> >> 
> >> ov_overlays[i].setVisibility(overlays[i].getVisibility());
> >>                 }
> >>         });
> >> }
> >> }
> >>
> >> in run time, only the visibility of the last layer of the array gets
> >> updated in the other map.
> >> I also tried with map.addLayers after adding the overlays[i]. events
> >> on...with the same result
> >>
> >> Do you see something wrong
> >> thanks
> >> Steve
> >>
> >>
> >>
> >>
> >> *Alexandre Dube <adube at mapgears.com>*
> >>
> >> 04/02/2010 03:36 PM
> >>
> >> 
> >> A
> >>                  Steve.Toutant at inspq.qc.ca
> >> cc
> >>                  users at openlayers.org
> >> Objet
> >>                  Re: [OpenLayers-Users] Magnifier window
> >>
> >>
> >>
> >> 
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> Hi Steve,
> >>
> >>  I think you could do something like that (pseudo-code) :
> >>
> >>  Create your original map
> >>  Create all your layers and add them to the map
> >>
> >>  Create your ov-map
> >>  Register a mapmove event to the map to make ov-map follow it
> >>  For each layer
> >>    Clone it and add it to ov-map
> >>    Register a visibilitychange event to a onVisibilityChanged 
function
> >>
> >>  onVisibilityChanged: function(event)
> >>    var layers = ov-map.getLayersByName(this.name); // this is the 
layer
> >> the visibility was changed
> >>    if(layers && layers.length == 1)
> >>      layers[0].setVisibility(this.visibility())
> >>
> >> Do you get the idea ?
> >>
> >> Best regards,
> >>
> >> Alexandre
> >>
> >> Steve.Toutant at inspq.qc.ca wrote:
> >> 
> >>> Hi,
> >>> I'm using openlayers with geoext.
> >>> I would like to create a magnifier window. So it is like an overview
> >>> map with a fix map center and a fix zoom level, but the main map and
> >>> this overview map share the same geoext tree, so the layers are
> >>> shown/hidden on both maps.
> >>>
> >>> I think I can do it if I start with the overview map example, here
> >>> http://www.openlayers.org/dev/examples/example-list.html
> >>>
> >>> Does someone have a better idea or already tried this?
> >>>
> >>> thanks in advance
> >>> Steve
> >>>
> >>> 
> ------------------------------------------------------------------------
> >>>
> >>> _______________________________________________
> >>> Users mailing list
> >>> Users at openlayers.org
> >>> http://openlayers.org/mailman/listinfo/users
> >>> 
> >>> 
> >> --
> >> Alexandre Dubé
> >> Mapgears
> >> www.mapgears.com
> >>
> >>
> >>
> >>
> >> 
> >
> >
> > 
>
>
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>
>


-- 
Alexandre Dubé
Mapgears
www.mapgears.com




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100205/0f676cb2/attachment.html


More information about the Users mailing list