[OpenLayers-Users] Overriding url for Vector layer
Adrian Popa
adrian_gh.popa at romtelecom.ro
Wed Jul 8 04:19:25 EDT 2009
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
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20090708/9cff2eed/attachment.html
More information about the Users
mailing list