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.p...@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@openlayers.org
http://openlayers.org/mailman/listinfo/users



_______________________________________________
Users mailing list
Users@openlayers.org
http://openlayers.org/mailman/listinfo/users

Reply via email to