[OpenLayers-Users] Overriding url for Vector layer

Adrian Popa adrian_gh.popa at romtelecom.ro
Wed Jul 8 06:34:49 EDT 2009


Hello Eric,
Your solution worked great! It's much better than what I managed to hack.
Thank you!

Eric Lemoine wrote:
> On Wednesday, July 8, 2009, Adrian Popa <adrian_gh.popa at romtelecom.ro> wrote:
>   
>> Hello Andreas,
>>
>> I've tried your solution, but unfortunately it doesn't send the
>> additional parameters to the script. Here's what I tried in firebug:
>>     
>>>>> locations.refresh({force: true, params: { 'key' : 'value'}});
>>>>>           
>> And the layer refreshes, but the only parameter sent is bbox.
>>
>> Any other ideas?
>>     
>
> how about modifying the protocol's params with something like:
>
> layer.protocol.options.params = {
>     "foo": "foo", "bar": "bar"
> };
>
>
>   
>> Regards,
>> Adrian
>>
>> Andreas Hocevar wrote:
>>     
>>> Hi,
>>>
>>> Adrian Popa wrote:
>>>       
>>>> I'm trying to display a vector layer (feed data as KML) and I'm
>>>> trying to dynamically set some variables that are sent server-side
>>>> for processing.
>>>> The layer definition is the following:
>>>> locations = new OpenLayers.Layer.Vector("Alarm Locations", {
>>>> � � � � � � � � � � � � projection: map.displayProjection,
>>>> minResolution: 1, maxResolution: 38,
>>>> � � � � � � � � � � � � strategies: [new OpenLayers.Strategy.BBOX()],
>>>> � � � � � � � � � � � � protocol: new OpenLayers.Protocol.HTTP({
>>>> *url: "kml_locations.pl"*, format: new OpenLayers.Format.KML({
>>>> extractStyles: true, extractAttributes: true })})});
>>>> map.addLayer(locations);
>>>> On some event (button pressed) I use a javascript function to replace
>>>> the "url" value from the layer definition with a url similar to:
>>>> "kml_locations.pl?key1=value1&key2=value2". After this I call
>>>> *layer.refresh({force: true});
>>>>
>>>> *From analysing the traffic to the web server I can see that the
>>>> layer refresh is called on the old url value (kml_locations.pl) even
>>>> if the attribute locations.protocol.url is set to the value I imposed.
>>>>
>>>> My question is: when the layer is refreshed - which URL is used (is
>>>> there a cached value)? Can this be overwritten? Or do I need to
>>>> create a new Protocol object?
>>>>         
>>> It is much simpler than you may think. Obviously your url stays the
>>> same (kml_locations.pl), only your params change (key1=value1,
>>> key2=value2). So you do not need to change the url at all. All you
>>> have to do is
>>>
>>> layer.refresh({
>>> � �force: true,
>>> � �params: {
>>> � � � �key1: "value1",
>>> � � � �key2: "value2"
>>> � �}
>>> });
>>>
>>> Regards,
>>> Andreas.
>>>
>>>       
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>>     
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20090708/6c92aabc/attachment.html


More information about the Users mailing list