<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<span class="objectBox objectBox-text">Hi again,<br>
<br>
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:<br>
<br>
locations.protocol = new OpenLayers.Protocol.HTTP({'url' :
'kml_alarms.pl', 'params' : { 'key2' : 'value2'} });<br>
</span><span class="objectBox objectBox-text">locations.refresh({force:true});</span><br>
<span class="objectBox objectBox-text"><br>
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.<br>
If you have better suggestions, I'm all ears.<br>
<br>
Regards,<br>
Adrian<br>
</span><br>
Adrian Popa wrote:
<blockquote cite="mid:4A544917.3040504@romtelecom.ro" type="cite">
<pre wrap="">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:
</pre>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<pre wrap="">locations.refresh({force: true, params: { 'key' : 'value'}});
</pre>
</blockquote>
</blockquote>
</blockquote>
<pre wrap=""><!---->And the layer refreshes, but the only parameter sent is bbox.
Any other ideas?
Regards,
Adrian
Andreas Hocevar wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hi,
Adrian Popa wrote:
</pre>
<blockquote type="cite">
<pre wrap="">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?
</pre>
</blockquote>
<pre wrap="">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.
</pre>
</blockquote>
<pre wrap=""><!---->
_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@openlayers.org">Users@openlayers.org</a>
<a class="moz-txt-link-freetext" href="http://openlayers.org/mailman/listinfo/users">http://openlayers.org/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</body>
</html>