[OpenLayers-Users] Permalink doesn't update on addlayer/removelayer

Slawomir Messner slawomir.messner at staff.uni-marburg.de
Wed Aug 25 05:22:38 EDT 2010


  should go = shouldn't go
Sry, again...

Am 25.08.2010 11:21, schrieb Slawomir Messner:
>  Ok, now I have realized it completely.
> But the third point also matters in the case of "static" maps.
> @Andreas: Sry, the first mail should go directly to you.
> Regards,
> Slawomir
>
>
> Am 25.08.2010 11:05, schrieb Andreas Hocevar:
>> Again, Control.Permalink and Control.ArgParser were designed for maps 
>> where users cannot add or remove layers. Once you realize that, 
>> you'll see that these controls do their job well.
>>
>> For maps where users can add and remove layers, you need your own 
>> permalink and argparser implementations.
>>
>> Regards,
>> Andreas.
>>
>> On Aug 25, 2010, at 10:23 , Slawomir Messner wrote:
>>
>>>   Hi,
>>> if I read the code of Permalink and ArgParser right it's a pretty
>>> confusing behaviour at all, especially if you have an application with
>>> dynamic loading of layers.
>>> While I'm working with these controls I noticed some other things:
>>> 1. If A sends his link, then changes the visibility of the third layer
>>> during his work than A has the same url like B. I think for a normal
>>> user pretty confusing to have to different links for one view.
>>>
>>> 2. If we change Andreas's example a little and B has "&layers=BFT" in
>>> the url. At the beginning the views of A and B are equal(if we assume
>>> the default config is all layers visible) because ArgParser configures
>>> the layer only if there are the same number of layers in url and map:
>>>
>>> "if (this.layers.length == this.map.layers.length) {"
>>>
>>> If a user now adds a layer then she/he wonders why his first overlay
>>> layer is not visible. This can also happen when he forgets why she/he's
>>> on the site because removes the second adds a new one, removes the
>>> "second", adds a new one... all is as expected till he adds the third
>>> then the second is not visible. This happens because the addlayer
>>> listener of ArgParser is unregistered after the line above. That's why
>>> standard Permalink and ArgParser combination is only useful to change
>>> the initial configuration, this should be mentioned in the 
>>> documentation.
>>>
>>> 3. One thing, i would separate visibility and base/overlay-layer. When
>>> you have two baselayers in your map ArgParser doesn't parse the "0" for
>>> baselayers which are not visible(or not THE baselayer of the map) and
>>> the unvisible baselayer becomes an overlay. So something like
>>> "&layers=BTBFOTOF" would be better for two baselayers(first the
>>> baselayer) and two overlay layer (first visible, second not)... or just
>>> make ArgParser parse "0".
>>>
>>> configureLayers: function() {
>>>
>>>          if (this.layers.length == this.map.layers.length) {
>>>              this.map.events.unregister('addlayer', this, 
>>> this.configureLayers);
>>>              for(var i=0, len=this.layers.length; i<len; i++) {
>>>                  var layer = this.map.layers[i];
>>>                  var c = this.layers.charAt(i);
>>>                  if (c == "B") {
>>>                      this.map.setBaseLayer(layer);
>>>                  } else if (c == "0") {
>>>                      layer.isBaseLayer = true; //trigger change-event?
>>>                  } else if ( (c == "T") || (c == "F") ) {
>>>                      layer.setVisibility(c == "T");
>>>                  }
>>>              }
>>>          }
>>>      },
>>>
>>> Regards,
>>> Slawomir
>>>
>>>   Am 24.08.2010 15:38, schrieb Andreas Hocevar:
>>>> On Aug 24, 2010, at 15:15 , Marc Jansen wrote:
>>>>
>>>>> Hi Andreas,
>>>>>
>>>>> first of all, sorry for cross-posting in the past. I thought it was
>>>>> useful in this case.
>>>>>
>>>>> I'd disagree about the not handling of the layeradd/layerremove event
>>>>> for the Permalink-control -- but can easily live without this 
>>>>> addition
>>>>> to OpenLayers :-)
>>>>>
>>>>> Your suggestions of alternative ways of handling application 
>>>>> "state" are
>>>>> valid and often better suited, yet I think the addition of two
>>>>> additional listeners to the control would be very intuitive.
>>>> This is where I have to disagree. Let's say you have a map with two 
>>>> pre-configured layers. Now user A, who uses the Permalink control 
>>>> as is, adds a layer, resulting in a permalink with "&layers=BT".
>>>>
>>>> User B has the same map, adds a completely different layer, but 
>>>> uses your add/removelayer aware Permalink control, resulting in a 
>>>> permalink with "&layers=BTT".
>>>>
>>>> Now the interesting part comes when both users send this permalink 
>>>> to someone who opens the permalink. That person will see exactly 
>>>> the same layers with both permalinks - because the map will load 
>>>> only the two pre-configured layers.
>>>>
>>>> This is why I wouldn't consider adding add/removelayer handlers to 
>>>> the Permalink control useful or intuitive at all.
>>>>
>>>> Regards,
>>>> Andreas.
>>>>
>>>>> Best regards,
>>>>>
>>>>> Marc
>>>>>
>>>>>
>>>>>
>>>>> On 24.08.2010 14:49, Andreas Hocevar wrote:
>>>>>> Hi,
>>>>>>
>>>>>> first of all, please don't cross-post dev and users.
>>>>>>
>>>>>> I am not sure if a permalink as provided by OpenLayers is what 
>>>>>> you really want for applications where the user can add or remove 
>>>>>> layers. The permalink only stores the visible/invisible state of 
>>>>>> the available layers in their order. It does not know anything 
>>>>>> about what these layers are. So a permalink will look exactly the 
>>>>>> same for any map with the same extent with let's say 3 layers 
>>>>>> that are all visible.
>>>>>>
>>>>>> If you want to store information on what layers are actually 
>>>>>> configured, you should look into Format.WMC, Format.OWS or 
>>>>>> solutions like the OpenGeo Suite's GeoExplorer 
>>>>>> (http://suite.opengeo.org/geoexplorer), which stores layer 
>>>>>> configurations in a database and provides a permalink with a map id.
>>>>>>
>>>>>> Regards,
>>>>>> Andreas.
>>>>>>
>>>>>> On Aug 24, 2010, at 14:31 , Marc Jansen wrote:
>>>>>>
>>>>>>
>>>>>>> Hi Slawomir,
>>>>>>>
>>>>>>> I'd consider this a bug with a (on first sight) reasonable easy 
>>>>>>> fix:
>>>>>>>
>>>>>>> In the Permalinks draw-method:
>>>>>>>
>>>>>>>          this.map.events.on({
>>>>>>>              'moveend': this.updateLink,
>>>>>>>              'changelayer': this.updateLink,
>>>>>>>              'changebaselayer': this.updateLink,
>>>>>>>              'addlayer': this.updateLink,
>>>>>>>              'removelayer': this.updateLink,
>>>>>>>              scope: this
>>>>>>>          });
>>>>>>>
>>>>>>> Or one could think of triggering a changelayer event when a 
>>>>>>> layer has
>>>>>>> been added/removed in Map.js.
>>>>>>>
>>>>>>> I am unsure which design is better, so I'd suggest opening up a 
>>>>>>> ticket
>>>>>>> (I cc'ed the developer list so the core developers notice this 
>>>>>>> discussion).
>>>>>>>
>>>>>>> Regards,
>>>>>>> Marc
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 24.08.2010 13:53, Slawomir Messner wrote:
>>>>>>>
>>>>>>>>    Hello,
>>>>>>>> Does anyone know why Permalink doesn't listen to 
>>>>>>>> addlayer/removelayer?
>>>>>>>> Every time I add a new layer I have to change a property(i.e.
>>>>>>>> visibility) to refresh the link. It's a bug or a feature?
>>>>>>>> Regards,
>>>>>>>> Slawomir
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> Dev at openlayers.org
>>>>>>> http://openlayers.org/mailman/listinfo/dev
>>>>>>>
>>>>> -- 
>>>>>
>>>>>    .................................................................
>>>>>     Karten im (Inter|Intra)net?
>>>>>
>>>>>     OpenLayers - Webentwicklung mit dynamischen Karten und Geodaten
>>>>>     von M. Jansen und T. Adams, OpenSourcePress, München.
>>>>>
>>>>>     ISBN: 978-3-937514-92-5
>>>>>     URL:  http://openlayers-buch.de
>>>>>    .................................................................
>>>>>
>>>>>
>>>>>    Dipl.-Geogr. Marc Jansen
>>>>>    - Anwendungsentwickler -
>>>>>
>>>>>    terrestris GmbH&    Co. KG
>>>>>    Irmintrudisstraße 17
>>>>>    53111 Bonn
>>>>>
>>>>>    Tel:    ++49 (0)228 / 96 28 99 -53
>>>>>    Fax:    ++49 (0)228 / 96 28 99 -57
>>>>>
>>>>>    Email:  jansen at terrestris.de
>>>>>    Web:    http://www.terrestris.de
>>>>>
>>>>>    Amtsgericht Bonn, HRA 6835
>>>>>    Komplementärin:  terrestris Verwaltungsgesellschaft mbH
>>>>>    vertreten durch: Hinrich Paulsen, Till Adams
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at openlayers.org
>>>>> http://openlayers.org/mailman/listinfo/users
>>>
>>> -- 
>>> -----------------------------------------------
>>> Slawomir Messner
>>> Forschungszentrum "Deutscher Sprachatlas"
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at openlayers.org
>>> http://openlayers.org/mailman/listinfo/users
>>
>>
>
>


-- 
-----------------------------------------------
Slawomir Messner
Forschungszentrum "Deutscher Sprachatlas"
06421-28-24981




More information about the Users mailing list