Hi again,

I managed to find a work-around for the problem - I just create a new Protocol.HTTP object and replace the old one. This way, my parameters get sent:

locations.protocol = new OpenLayers.Protocol.HTTP({'url' : 'kml_alarms.pl', 'params' : { 'key2' : 'value2'} });
locations.refresh({force:true});

I don't know if I'm creating a memory leak by deleting the reference to the old Protocol.HTTP object instance. I'm not sure if it's referenced anywhere else nor if it will be deleted by the garbage collector.
If you have better suggestions, I'm all ears.

Regards,
Adrian

Adrian Popa 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?
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
[email protected]
http://openlayers.org/mailman/listinfo/users


_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to