Google Maps API的库JS文件分析(1)
在Google Maps API提供的JS文件中,引用了一个后台的JS库文件,该文件针对不同的浏览器有三个版本,这几天因为我想给我的Google Map扩展一些功能,所以研究了这个文件,我现在正打算陆续将我注释过的该文件放在网上,该文件一共有7000多行,我会分段渐渐的注释出来,我是按照分类注释的,所以并不会按照该JS文件顺序。
该文件Google作了处理,所有的变量名都被处理成了简单的a,b,c,d之类,所以理解起来比较费劲。
该JS文件是以IE版本的http://maps.google.com/mapfiles/maps.21.js来分析的,其他的几个我觉得基本的架构也应该差不多,所以我没有仔细看,实际上,这个文件Google也会不停的更新(在我写这个文章的时候,我发现Google已经更新到maps.25.js了),不过我想架构上也不会有太大的变动吧。
由于该文件是在比较复杂,所以难免会出现理解错误的情况,请谅解!
下面是第一个:
1
//返回空的函数,在不支持XML解析的时候使用本函数返回空
2
function Gb(a)
3
{
4
return null
5
};;
6
//通过设置windows的参数将类和对象公开
7
function Ab(a)
8
{
9
var b=a||window;
10
b._MapsApplication=v;
11
b._VPage=oa;
12
b._Point=r;
13
b._Size=H;
14
b._Bounds=C;
15
b._Map=l;
16
b._Icon=ea;
17
b._Marker=K;
18
b._Polyline=E;
19
//下面几个是集成的地图类型对象
20
b._LargeMapControl=ca;
21
b._SmallMapControl=ua;
22
b._SmallZoomControl=va;
23
b._MapTypeControl=X;
24![](/Images/OutliningIndicators/InBlock.gif)
25
b._GoogleMapMercSpec=w;
26
b._KeyholeMapMercSpec=D;
27
b._HybridMapSpec=M;
28
b._KatrinaMapSpec=J;
29
b._GOOGLE_MAP_TYPE=null;
30
b._SATELLITE_TYPE=null;
31
b._HYBRID_TYPE=null;
32
b._KATRINA_TYPE=null;
33
b._DocumentTransport=Ca;
34
b._XmlHttp=Ja;
35
b._Xml=ya;
36
b._Xslt=O;
37
b._Event=j;
38
b._Timer=R;
39
b._Log=z;
40
b._makePasteBox=Bb;
41
b.GMapsApplication=v;
42
b.GVPage=oa;
43
//下面几个就是在Google Maps API中公开的对象
44
b.GPoint=r;
45
b.GSize=H;
46
b.GBounds=C;
47
b.GMap=l;
48
b.GIcon=ea;
49
b.GMarker=K;
50
b.GPolyline=E;
51![](/Images/OutliningIndicators/InBlock.gif)
52
b.GControlPosition=$;
53
b.G_ANCHOR_TOP_LEFT=0;
54
b.G_ANCHOR_TOP_RIGHT=1;
55
b.G_ANCHOR_BOTTOM_LEFT=2;
56
b.G_ANCHOR_BOTTOM_RIGHT=3;
57
//下面几个是一些集成的控件对象
58
b.GLargeMapControl=ca;
59
b.GSmallMapControl=ua;
60
b.GSmallZoomControl=va;
61
b.GMapTypeControl=X;
62
b.GScaleControl=ja;
63![](/Images/OutliningIndicators/InBlock.gif)
64
b.G_MAP_DEFAULT_COPYRIGHTS=Ac;
65
b.G_MAP_API_COPYRIGHTS=xc;
66
b.GGoogleMapMercSpec=w;
67
b.GKeyholeMapMercSpec=D;
68
b.GHybridMapSpec=M;
69
b.GKatrinaMapSpec=J;
70
if(window.createMapSpecs)
71
{
72
var c=window.createMapSpecs();
73
b.G_MAP_TYPE=c[0];
74
b.G_SATELLITE_TYPE=c[1];
75
b.G_HYBRID_TYPE=c[2];
76
b.G_KATRINA_TYPE=c[3]
77
}
78
else
79
{
80
b.G_MAP_TYPE=null;
81
b.G_SATELLITE_TYPE=null;
82
b.G_HYBRID_TYPE=null;
83
b.G_KATRINA_TYPE=null
84
}
85
b.GDocumentTransport=Ca;
86
b.GXmlHttp=Ja;
87
b.GXml=ya;
88
b.GXslt=O;
89
b.GEvent=j;
90
b.GTimer=R;
91
b.GLog=z;
92
b.GMakePasteBox=Bb
93
}
94
function nd(a,b,c)
95
{
96
var d=[];
97
var e=[a];
98
if(a=="https:")
99
{
100
e.unshift("http:") //shift:将指定的元素插入数组开始位置并返回该数组。
101
}
102
b=b.toLowerCase();
103
var f=[b];
104
var i=b.split(".");
105
//下面的代码真的不知道在搞什么,如果存在www则删除,否则加上……,
106
//对于www.step1.cn会得到step1.cn,如果对于mail.step1.cn却得到www.mail.step1.cn
107
if(i[0]=="www")
108
{
109
i.shift() //shift:移除数组中的第一个元素并返回该元素。
110
}
111
else
112
{
113
i.unshift("www")
114
}
115
f.push(i.join("."));
116
c=c.split("/");
117
var g=[];
118
while(c.length>1)
119
{
120
c.pop();
121
g.push(c.join("/")+"/")
122
}
123
for(var h=0;h<e.length;++h)
124
{
125
for(var m=0;m<f.length;++m)
126
{
127
for(var o=0;o<g.length;++o)
128
{
129
d.push(e[h]+"//"+f[m]+g[o])
130
}
131
}
132
}
133
return d
134
}
135
//本代码是检测验证码的,很容易就可以看出,如果_apiHash没有设置,则自动跳过检测
136
if(typeof _apiHash!="undefined")
137
{
138
var ed=_apiHash;
139
var Fb=nd(window.location.protocol,window.location.host,window.location.pathname);
140
var Db=false;
141
for(var Wa=0;Wa<Fb.length;++Wa)
142
{
143
var ld=Fb[Wa];
144
var md=kd(ld);
145
if(ed==md)
146
{
147
Ab(); //初始化地图设置,执行这个之后就可以使用地图对象了
148
Db=true;
149
break
150
}
151
}
152
if(!Db)
153
{
154
_c=false;
155
alert(_mApiBadKey)
156
}
157
}
158
else
159
{
160
Ab()
161
};
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
posted on 2005-10-13 17:59 K_Reverter 阅读(711) 评论(0) 编辑 收藏 举报