[OpenLayers-Users] Overriding url for Vector layer
Andreas Hocevar
ahocevar at opengeo.org
Wed Jul 8 11:52:01 EDT 2009
Adrian Popa wrote:
> 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.
>
Oops, you are right. This works with the Fixed strategy, but not with
BBOX. I created a ticket with a proposed patch to add this funcitonality
to the BBOX strategy:
http://trac.openlayers.org/ticket/2171
Regards,
Andreas.
> 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
>
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Users
mailing list