[OpenLayers-Users] customizing permalink

Puneet Kishor punk.kish at gmail.com
Sat Jan 21 16:48:38 EST 2012


On Jan 19, 2012, at 7:23 PM, Stephen Woodbridge wrote:

> On 1/19/2012 6:54 PM, Puneet Kishor wrote:
>> I want to add the permalink control to the map, but I don't want to display it as is out of the box. Or, to be more precise, I want to build my own permalink link so that I can add a few more custom params to the link that the control builds, and then do something with that link, for example, store it in the db, or pop it in a window, etc.
>> 
>> How can I do that?
> 
> Here is an example where are add additional parameters:
> 
> http://gis.imaptools.com/routing/leaddog/?zoom=14&lat=33.85749&lon=35.51971&layers=B0TTTF&start=35.493583%2033.826664&stop=35.565174%2033.864285&method=STS&lang=arb
> 
> Feel free to look at the page source to see how I did it.


Great help, thanks. That got me started, but I don't have a working solution yet. Here is what is going on... I am trying to customize the permalink control using the following function

    var state = {};
    
    new OpenLayers.Control.Permalink(
        "permalink", 
        uri, 
        {
            "createParams": function() {
                var args = OpenLayers.Control.Permalink.prototype.createParams.apply(
                    this, arguments
                );
    
                // add my args here
                if (state) {
                    for (var s in state) {
                        args[s] = encodeURI(state[s]);
                    }
                }
                
                return args;
            }
        }
    );
            
and then, in my map I have buttons that invoke different functionality. For example, one functionality is like so
    
    "doThat": function(a, b, c) {
    
        // update state
        state = {
            action: "doFoo",
            params: {
                a: a,
                b: b,
                c: c
            }
        };
        
        .. do something ..
    };
    
My intent is to generate a permalink that looks like so

    http://server/app?zoom=6&lat=-1.35&lon=-38.14&layers=TB000TTTTT&action=doThat&a="foo"&b=43&c="bar"
    
The problem is, by the time doThat() is called and it updates state, the permalink has already been formed, so it doesn't yet have the updated values from "state". If I now move the map or do something else, that is when the permalink gets updated with the values from "state" but it is always one action behind … how do I get around this phase lag? In other words, I want to update the permalink *after* the "state" has been updated so that when "createParams" is called, it creates the correct permalink.

--
Puneet Kishor


More information about the Users mailing list