source: extensions/rv_gmaps/trunk/template/page_linker.js @ 12700

Last change on this file since 12700 was 12700, checked in by rvelices, 12 years ago

rv_gmaps towards full maps api v3 migration

  • Property svn:eol-style set to LF
File size: 1.8 KB
Line 
1function PageLinker(map, aElementId)
2{
3        this._map = map;
4        this._elementId = aElementId;
5
6        google.maps.event.bind( this._map, "idle", this, this._regenerateUrl );
7        google.maps.event.bind( this._map, "maptypeid_changed", this, this._regenerateUrl );
8}
9
10PageLinker.getQueryVars = function()
11{
12        var vars = {};
13        var qString = unescape( top.location.search.substring(1) );
14        if (qString.length==0)
15                return vars;
16        var pairs = qString.split(/\&/);
17        for (var i=0; i<pairs.length; i++ )
18        {
19                var nameVal = pairs[i].split(/\=/);
20                vars[nameVal[0]] = nameVal[1];
21        }
22        return vars;
23};
24
25PageLinker.map2Url = function( map )
26{
27        var vars = PageLinker.getQueryVars();
28        vars['ll'] = map.getCenter().toUrlValue(5);
29        vars['z'] = map.getZoom();
30        if ( map.getMapTypeId()===google.maps.MapTypeId.ROADMAP )
31                { if (vars['t']) vars['t']=null; }
32        else
33                vars['t']=map.getMapTypeId();
34
35        var url = document.location.protocol+'//'+document.location.hostname+document.location.pathname;
36        var bFirst = true;
37        for (var key in vars)
38        {
39                url += bFirst ? "?" : "&";
40                bFirst = false;
41                url += key;
42                if (vars[key]!=null)
43                        url += "="+vars[key];
44        }
45        return url;
46};
47
48PageLinker.url2Map = function( mapOptions )
49{
50        var vars = PageLinker.getQueryVars();
51        if ( !( (vars['z'] && vars['ll']) || vars['t'] ) )
52                return false;
53
54        var mapType = google.maps.MapTypeId.ROADMAP;
55        if  (vars['t'])
56                mapOptions.mapTypeId = vars['t'];
57       
58        if (vars['z'] && vars['ll'])
59        {
60                mapOptions.zoom = parseFloat(vars['z']);
61                var ll = vars['ll'].split( "," );
62                if (ll.length==2)
63                {
64                        mapOptions.center = new google.maps.LatLng( ll[0], ll[1] );
65                }
66                return true;
67        }
68        return false;
69}
70
71
72PageLinker.prototype = {
73
74_regenerateUrl: function()
75{
76  var elt = document.getElementById( this._elementId );
77  if (!elt) return;
78  elt.href = PageLinker.map2Url(this._map);
79}
80
81}
Note: See TracBrowser for help on using the repository browser.