[OpenLayers-Users] Overriding url for Vector layer

Eric Lemoine eric.lemoine at camptocamp.com
Wed Jul 8 04:23:00 EDT 2009


On Wednesday, July 8, 2009, Adrian Popa <adrian_gh.popa at 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 at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>

-- 
Eric Lemoine

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 96
Mail : eric.lemoine at camptocamp.com
http://www.camptocamp.com



More information about the Users mailing list