[OpenLayers-Users] Overriding url for Vector layer
Adrian Popa
adrian_gh.popa at romtelecom.ro
Wed Jul 8 01:36:52 EDT 2009
Thanks Andreas... Unfortunately I already put a lot of effort to
generate a string to append to my url, but I will try to generate json
type of data instead...
Thanks.
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.
>
More information about the Users
mailing list