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

Last change on this file since 31915 was 23083, checked in by rvelices, 11 years ago

rv_gmaps:

  • admin can choose default map type (roadmap, satellite, ...)
  • auto center and zoom when viewing map for the entire gallery
  • fix kml namespace
  • attempt to fix uage with https on the photo page (need test)
  • Property svn:eol-style set to LF
File size: 1.7 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        vars['t']=map.getMapTypeId();
31
32        var url = document.location.protocol+'//'+document.location.hostname+document.location.pathname;
33        var bFirst = true;
34        for (var key in vars)
35        {
36                url += bFirst ? "?" : "&";
37                bFirst = false;
38                url += key;
39                if (vars[key]!=null)
40                        url += "="+vars[key];
41        }
42        return url;
43};
44
45PageLinker.url2Map = function( mapOptions )
46{
47        var vars = PageLinker.getQueryVars();
48        if ( !( (vars['z'] && vars['ll']) || vars['t'] ) )
49                return false;
50
51        var mapType = google.maps.MapTypeId.ROADMAP;
52        if  (vars['t'])
53                mapOptions.mapTypeId = vars['t'];
54       
55        if (vars['z'] && vars['ll'])
56        {
57                mapOptions.zoom = parseFloat(vars['z']);
58                var ll = vars['ll'].split( "," );
59                if (ll.length==2)
60                {
61                        mapOptions.center = new google.maps.LatLng( ll[0], ll[1] );
62                }
63                return true;
64        }
65        return false;
66}
67
68
69PageLinker.prototype = {
70
71_regenerateUrl: function()
72{
73  var elt = document.getElementById( this._elementId );
74  if (!elt) return;
75  elt.href = PageLinker.map2Url(this._map);
76}
77
78}
Note: See TracBrowser for help on using the repository browser.