[OpenLayers-Users] Overriding url for Vector layer
Andreas Hocevar
ahocevar at opengeo.org
Tue Jul 7 11:36:09 EDT 2009
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.
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Users
mailing list