[OpenLayers-Users] Overriding url for Vector layer

Adrian Popa adrian_gh.popa at romtelecom.ro
Wed Jul 8 01:36:52 EDT 2009


Thanks Andreas... Unfortunately I already put a lot of effort to 
generate a string to append to my url, but I will try to generate json 
type of data instead...
Thanks.

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.
>




More information about the Users mailing list