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

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

rv_gmaps towards full maps api v3 migration (still to test)

  • 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  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  for (var i=0; i<map.getMapTypes().length; i++)
57    if ( map.getMapTypes()[i].getUrlArg()==vars['t'] )
58    {
59      mapOptions.mapTypeId = map.getMapTypes()[i];break;
60    }
61 
62  if (vars['z'] && vars['ll'])
63  {
64    mapOptions.zoom = parseFloat(vars['z']);
65    var ll = vars['ll'].split( "," );
66    if (ll.length==2)
67    {
68      mapOptions.center = new google.maps.LatLng( ll[0], ll[1] );
69    }
70    return true;
71  }
72  return false;
73}
74
75
76PageLinker.prototype = {
77
78_regenerateUrl: function()
79{
80  var elt = document.getElementById( this._elementId );
81  if (!elt) return;
82  elt.href = PageLinker.map2Url(this._map);
83}
84
85}
Note: See TracBrowser for help on using the repository browser.