Google Maps API 中文開發手册 - API 概要
上一篇 / 下一篇 2007-08-23 12:20:28 / 個人分類:程式技術文件
GMap类
房市家 大社區,A3m8l`qF
eDGMap的每一个实例表现为页面上的一个地图,可以创建这个类的多个实例 每个地图被包含在一个container之中,比如一个DIV标签,除非明确指定,地图将使用相应container的大小.
GMap类提供了操作地图点(中心和缩放度)和添加删除标记(比如GMarker和GPolyline实例)和方法. 同时也提供了一个打开"信息浮窗"的方法,地图上同时只能有一个信息浮窗.
更多信息请参看GMap类参考房市家 大社區
e(X8YIJh1@
F^ Bt3Ma hb \5C0房市家 大社區D'vO4M`B"MIK
房市家 大社區;dql+[1ok.SYLS5z*P bu Q|0事件
房市家 大社區7|B6kNI'L利用事件监视器,你可以在程序中加入动态的内容,每个实例提供一些指定的事件,你的程序可以利用静态方法GEvent.addListener或GEvent.bind监视这些事件. 例如,以下代码片断在每次用户点击地图的时候显示一个警告: 房市家 大社區.q0J8hx'T8x4o
房市家 大社區-ra1~ nI,c+p0sA
var map = new GMap(document.getElementById("map"));
GEvent.addListener(map, "click", function() {
alert("You clicked the map");
});
3lNS,|vO0GEvent.addListener使用一个函数作为第三个参数,这个函数作为事件处理器,在事件被触发时运行. 如果想绑定一个对象的方法到事件,可以使用GEvent.bind.例如:
z4wf4h+ZcT3N0房市家 大社區x-y-`H8q"v*]\(f
function MyApplication() {
this.counter = 0;
this.map = new GMap(document.getElementById("map"));
GEvent.bind(this.map, "click", this, this.onMapClick);
}
MyApplication.prototype.onMapClick() {
this.counter++;
alert("You have clicked the map " + this.counter +
this.counter == 1 ?" time.":" times.");
}
var application = new MyApplication();
房市家 大社區0I-T0J*~v\7~房市家 大社區6mdjG+c-}Q^.r/{
房市家 大社區Eq zd%fR9O_$` E$I房市家 大社區1\;^g z?+lm
信息浮窗
房市家 大社區.QMKM9qMap类有一个信息浮窗,可以在地图上以浮动窗口模式在地图上显示HTML内容.
zH*eb.Y _1c0 房市家 大社區7Hvm4Z#W基本的浮动窗口方法是openInfoWindow,这个方法以一个点和一个HTML节点作为参数,这个HTML节点被添加到信息浮窗容器里面,并显示在相应点处.
InI5mS,^
J$jsf0openInfoWindowHtml差不多,但是它使用HTML字符串作为参数. openInfoWindowXslt则利用XML节点和XSLT文档的URL地址来生成信息浮窗内容,如果该XSLT文档还没有被下载,则会自动异步下载此文件.
如果需要在标记上显示信息浮窗,你可以传递第三个参数(可选)给出窗口顶端和给定点位置的像素差. 比如你的标记高度是10px,你可以使用GSize(0,-10)作第三个参数.
GMarker类还提供了openInfoWindow方法用来处理像素值内容,所以不用担心在程序中计算像素的问题.房市家 大社區mP0Jf*~FJ$CNG
*N8e~.?5H7r;mnX0房市家 大社區2y*gtbV
房市家 大社區f;t)z1G&z/qT4_房市家 大社區^i7}aV6}En$L
标注
房市家 大社區W4WC%Hl7_标注是一些绑定到地理坐标的对象,当移动、缩放地图或切换模式(比如从地图到卫星图)时,标注也会跟着变化.
9F"UG|7P$k&o9b0 房市家 大社區"i#v-jz-j TOj6_UMaps API提供两种标注:标记(地图上的图标)和折线(根据地理位置绘制的折线)房市家 大社區Na\[D!I
房市家 大社區,gF{4y7\2v9pc房市家 大社區(v~w.}{(I+NSC
图标和标记
0WPo2m$Y@g0L0The GMarker构造函数使用一个图标和一个点作为参数,并提供一些类似"点击\"的事件,看这个创建标记的例子房市家 大社區a1D#^x5a%H3_]
+R~Z} QZ1@0创建标记最困难的地方是指定图标,复杂在于一个图标需要几个不同的图片构成.房市家 大社區8k t7S~ ?2Wd h
房市家 大社區 G H*hBm&{每一个图标至少都有一个前景图片和一个阴影图片,阴影必须是前景图的45度视角的形状,并且左下角和前景图的左下角重叠,还必须是24-bit PNG灰度图片,才能刚好使图标看起来像站在地图上一样.
yBg"oiH;?~2v0 房市家 大社區K/j]]*o$o/c"n房市家 大社區$v eAen
D7Es:@1W0The GIcon需要指定图标使用的图片文件的大小以便以合适的大小显示这些图片,一下是指定一个图标的最基本的代码:房市家 大社區 ^\]T^nBZ0j
5k P4nU$h\0
!V$ya%[}(E\1LR*~0var icon = new GIcon();
icon.image = "http://www.google.com/mapfiles/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
房市家 大社區2\X"gpM e
ZThe GIcon类提供有超过7个的属性必须设置以保证图标在浏览器上的兼容性和功能. 比如imageMap属性指定图标不透明部分的形状,如果你没有设置这个属性,在Firefox/Mozilla浏览器上,整个图标(包括透明部分)都能被点击. 看这个GIcon类参考了解更多信息
#Pn;L6S'H0
(mK(osv/mqV0 房市家 大社區0z'J#Ee&D)NbT} C房市家 大社區 I4B `3@(Gj'C
折线
2]/Q^d\*y"U)A nC0GPolyline构造函数使用一组地理点最为参数,你也能指定颜色、线宽和透明度 颜色采用老的HTML样式,比如"#ff0000". GPolyline不支持直接使用颜色名字. 例如以下代码会创建一个10像素宽的红色线段:房市家 大社區;M|G'y {
var polyline = new GPolyline([new GPoint(-122.1419, 37.4419),
new GPoint(-122.1519, 37.4519)],
"#ff0000", 10);
map.addOverlay(polyline);
t&TC)C L(oY[$n0在IE浏览器中,我们用VML来绘制折线,而在其他的浏览器之中,我们使用Google服务器上的图片,并在地图变化时重新刷新图片.
L7~nXa i$B0 房市家 大社區7y(Q hNLD1`房市家 大社區Kw-_d jFw3s
房市家 大社區cc{yc&~ @GL!kiK4K/{Ptw0控件
房市家 大社區&qu9R:iTaddControl用来添加控件,Maps API可以让你在地图上使用如下控件:
8SF |m1@/}c0
M!jT(wr%j%?z8DMY/~0GLargeMapControl在Google Map中使用的大缩放/定位控件GSmallMapControl在Google Map中使用的小缩放/定位控件GSmallZoomControl一个小的缩放控件(不能定位),用在小窗口中显示驾驶方向GMapTypeControl地图类型切换控件(如:地图和卫星图)
例如,要在地图上添加一个缩放/定位控件,你可以在地图初始化时使用如下代码:
x'`:nX|)~ wI0tF/q[!}"~!T0房市家 大社區7c hqY)Lg aEi4{
map.addControl(new GLargeMapControl());
T!Qg)ezF0这样,控件就会被添加到地图的左上角
j AIg%S0.PH2wa]D)x)kg0
6Q$z!i z.zJ"zx5r%mw*s0ct V$~ I0
Qs%~1Pl*qU0XML和RPC
X ^
Z:}6O0Google Maps API提供了一个创建XmlHttpRequest对象的方法,当前可以在IE, Firefox, and Safari上运行正常,如下:
房市家 大社區oY Em5{-E
var request = GXmlHttp.create();
request.open('GET', "myfile.txt", true);
request.onreadystatechange = function() {
if (request.readyState == 4) {
alert(request.responseText);
}
}
request.send(null);
7x1J2u3nYi0bY P wW
q0你还可以使用静态方法GXml.parse来解析一个XML文档,使用XML字符串作为参数,这个方法对所有的浏览器兼容. 如果本地浏览器不支持XML解析,则会采用一个基于JavaScript的解析器,可是不能保证这个解析器一定能正常的解析.
注意Google Maps API不需要使用XML或XmlHttpRequest因为这是一个纯JavaScript/DHTML的API.
lh \ o&h_4Q8t0
5oN;VJfm6k ^X0 房市家 大社區:B%]ZLa0]Z [7h,G0AuO~['Et u0來源: http://www.gearthchina.com/eartshow.asp?910.html
zr~qc;Hc0相關閱讀:
- Google Maps API 中文開發手册 - 導言 (frankie, 2007-8-23)
- Google Maps API 中文開發手册 - 應用範例 (frankie, 2007-8-23)