[OpenLayers-Users] Overriding url for Vector layer

Andreas Hocevar ahocevar at opengeo.org
Wed Jul 8 11:52:01 EDT 2009


Adrian Popa wrote:
> 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.
>   

Oops, you are right. This works with the Fixed strategy, but not with 
BBOX. I created a ticket with a proposed patch to add this funcitonality 
to the BBOX strategy:
http://trac.openlayers.org/ticket/2171

Regards,
Andreas.

> Any other ideas?
> 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
>   


-- 
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.




More information about the Users mailing list