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

Last change on this file since 3447 was 3447, checked in by rvelices, 15 years ago
  • added RV Map & Earth extension
  • Property svn:eol-style set to LF
File size: 2.0 KB
Line 
1function PageLinker(map, aElementId)
2{
3  this._map = map;
4  this._elementId = aElementId;
5
6  PageLinker.url2Map( map );
7 
8  GEvent.bind( this._map, "maptypechanged", this, this._regenerateUrl );
9  GEvent.bind( this._map, "moveend", this, this._regenerateUrl );
10  if ( this._map.isLoaded() )
11    this._regenerateUrl();
12}
13
14PageLinker.getQueryVars = function()
15{
16  var vars = {};
17  var qString = unescape( top.location.search.substring(1) );
18  if (qString.length==0)
19    return vars;
20  var pairs = qString.split(/\&/);
21  for (var i=0; i<pairs.length; i++ )
22  {
23    var nameVal = pairs[i].split(/\=/);
24    vars[nameVal[0]] = nameVal[1];
25  }
26  return vars;
27};
28
29PageLinker.map2Url = function( map )
30{
31  var vars = PageLinker.getQueryVars();
32  vars['ll'] = map.getCenter().toUrlValue(5);
33  vars['z'] = map.getZoom();
34  if ( map.getCurrentMapType()===G_NORMAL_MAP )
35    { if (vars['t']) vars['t']=null; }
36  else
37    vars['t']=map.getCurrentMapType().getUrlArg();
38
39  var url = document.location.protocol+'//'+document.location.hostname+document.location.pathname;
40  var bFirst = true;
41  for (var key in vars)
42  {
43    url += bFirst ? "?" : "&";
44    bFirst = false;
45    url += key;
46    if (vars[key]!=null)
47      url += "="+vars[key];
48  }
49  return url;
50};
51
52PageLinker.url2Map = function( map )
53{
54  var vars = PageLinker.getQueryVars();
55  if ( !( (vars['z'] && vars['ll']) || vars['t'] ) )
56    return;
57
58  var mapType = G_NORMAL_MAP;
59  if  (vars['t'])
60  for (var i=0; i<map.getMapTypes().length; i++)
61    if ( map.getMapTypes()[i].getUrlArg()==vars['t'] )
62    {
63      mapType = map.getMapTypes()[i];break;
64    }
65 
66  if (vars['z'] && vars['ll'])
67  {
68    var zoom = parseFloat(vars['z']);
69    var ll = vars['ll'].split( "," );
70    if (ll.length==2)
71    {
72      var center = new GLatLng( ll[0], ll[1] );
73      map.setCenter( center, zoom, mapType );
74    }
75  }
76}
77
78
79PageLinker.prototype = {
80
81_regenerateUrl: function()
82{
83  var elt = document.getElementById( this._elementId );
84  if (!elt) return;
85  elt.href = PageLinker.map2Url(this._map);
86}
87
88}
Note: See TracBrowser for help on using the repository browser.