GoogleMapApi⾕歌地图接⼝整理
⼀:基本知识:
1. 使⽤⾕歌地图 API 的第⼀步就是要注册⼀个 API 密钥,需要注重⼀下两点:
1.假如使⽤ API 的页⾯还没有发布,只是在本地调试,可以不⽤密钥,随便⽤个字符串代替就可以了。
2.API 密钥只对⽹站⽬录或者域有效。对不同域的⽹页,需要⽤这些域分别注册不同的密钥
2.页⾯引⽤javascript⽂件<script src="/maps?file=api&hl=zh-CN&v=2&key=abcdefg" type="text/javascript"></script>
le.com:也可以⽤,假如你需要在地图上显⽰⼤陆以外的具体地图,就⽤
时间会冲淡一切2.file=api 这个是请求API 的JS ⽂件⽤的,固定的格式。
3.hl=zh-CN
这个是在设定地图上除了地图图⽚以外的诸如控件名称、版权声明、使⽤提⽰等所需要显⽰⽂本的语⾔
版本时候⽤的,假如没有指定这个参数就使⽤ API 的默认值,对 来说,默认是中⽂简体 默认的是英⽂。
4. v=2
这个是⽤来指定需要导⼊的 API 类库的版本号,可以有四种设定⽅式:
v=2.s 稳定版本,更新最慢,但是最可靠;
v=2 当前版本(只⽤主版本号),更新速度和可靠性介于 s 和 x 之间
v=2.x 最新版本,更新最快,包括最新功能,可能没有当前版本可靠;
v=2.76 指定具体版本。不建议使⽤。
注:⽬前⾕歌地图 API的主版本号是2,当API升级时旧版本只能继续使⽤⼀个⽉,所以要及时更改主版本号,版本号改变会在Google Code和Maps API讨论组发布相关信息
5.key=abcdefg这个是设定你注册的 API 密钥.
⼆:核⼼类:
google地图API主要包括:地图类(GMap2)、标记类(GMarker)、标记选项类(GMarkerOptions)、折线类(GPolyline)、经纬度(GLatLng)、命名空间(GEvent)、坐标类(GPoint)、控件的⼤⼩类GSize、 interface(GControl)、地图类型类(GMapType)、地图上⾯的图标类(GIcon)、窗体类(GInfoWindow)、窗体选项类 GInfoWindowOptions)、接⼝GOverlay、枚举GMapPane等等
注:标记和折线都是地图的覆盖物
1.GMap2:地图类,下⾯实例化⼀张地图:
var map= new GMap2(container: DOM_Div,opts: Options);
构造函数的参数如下:
参数是否必要值类型定义
container 是 DOM_Div DOM元素,是个Div
opts 可选 Options 构造函数选项
GMap2包含的⽅法:
1.设置状态的⽅法:
enableDragging():设置地图可以被拖动。
disableDragging():禁⽌地图被拖动。
draggingEnabled():返回地图是否能够被拖动的布尔值。假如能够拖动,返回"真";否则返回"假"。
enableInfoWindow():设置地图信息窗⼝可以弹出。
disableInfoWindow():禁⽌地图信息窗⼝弹出。
infoWindowEnabled():返回地图信息窗⼝是否能够被弹出的布尔值。假如能够弹出,返回"真";否则返回"假"。这个⽅法通常作为检验之⽤。
enableDoubleClickZoom():设置可以双击缩放地图,左键双击为放⼤,右键双击为缩⼩(默认)。
disableDoubleClickZoom():禁⽌双击缩放地图,Google Earth 默认为禁⽌双击缩放。
doubleClickZoomEnabled():返回地图是否可以双击缩放的布尔值。假如能够双击缩放,返回"真";
enableContinuousZoom():设置地图可以连续平滑地缩放。
disableContinuousZoom():禁⽌地图连续平滑地缩放。
continuousZoomEnabled():返回地图是否可以连续平滑地缩放的布尔值。假如能够连续平滑地缩放,返回"真";否则返回"假"。
enableScrollWheelZoom():设置地图可以由⿏标滚轮控制缩放。
disableScrollSheelZoom():禁⽌由⿏标滚轮控制地图缩放。
scrollWheelZoomEnabled():返回地图缩放是否可以由⿏标滚轮控制。假如能够由⿏标滚轮控制缩放,返回"真";否则返回"假"。
isLoaded() 返回类型布尔值假如地图已经被tCenter()初始化,则返回true.
2.得到地图的数据信息⽅法:
getCenter() 返回类型GLatLng 返回地图中⼼点的地图坐标.
getBounds() 返回类型GLatLngBounds 返回地图视⼝范围的矩形区域的地理坐标.
getBoundsZoomLevel(bounds) 返回类型数字返回显⽰指定的区域需要的最适合的地图缩放等级.该缩
放等级是根据当前的地图类型计算出来的,假如还没有指定地图类型,将使⽤地图类型数组之中的第⼀项.
getSize() 返回类型GSize 返回地图视⼝的像素⼤⼩.
getZoom() 返回数字返回当前的缩放等级.
getContainer():取得地图的容器
getCurrentMapType()得到当前的地图类型。注重得到的是地图类型GMapType对象,⽽不是对象名称
3.设置地图:
tCenter(center, zoom?, type?)将地图视图切换到指定的中⼼点,也可以同时设置可选的地图缩放等级和地图类型.地图类型必须已经添加到地图.
addMapType()该⽅法必须在构造地图实例之后初始化地图状态时⽴即执⾏.在地图刚刚构造的时候调⽤地图其他的⽅法都将会产⽣错误.
panTo(center) 设置地图的中⼼点到指定的坐标,假如该点已经在当前的视⼝之中,则地图中⼼会滑动到该位置.
panBy(distance) 地图滑动指定的像素距离.
panDirection(dx, dy) 以指定的⽅向滑动地图宽度⼀半的距离.+1代表右⽅和下⽅,-1代表左⽅和上⽅.
tZoom(level)设置地图的缩放等级到给定值.
zoomIn()缩⼩地图(将地图的缩放等级增加1).
zoomOut()放⼤地图(将地图的缩放等级减少1).
savePosition()保存地图当前的位置和缩放等级,以供以后通过returnToSavedPosition()⽅法来返回当前视图.
returnToSavedPosition()返回到上⼀次通过savePosition()保存的地图视图.
checkResize()检查地图容器(container)的⼤⼩是否已经发⽣变化,在地图容器DOM⼤⼩可能发⽣变化的时候调⽤该⽅法,以便地图能进⾏⾃动调整.
tMapType(GMapType):设置地图类型:⼤概有三种类型:G_NORMAL_MAP,G_SATELLITE_MAP,G_PHYSICAL_MAP,
removeMapType(GMapType)从当前地图上删除⼀个地图类型。
enableGoogleBar():设置地图上的搜索栏
4.有关地图覆盖物的⽅法:
addOverlay(overlay) 在地图上添加⼀个标注并触发地图的addoverlay事件.
removeOverlay(overlay) 在地图上删除指定的标注.假如该标注确实在地图上.
clearOverlays()删除所有地图上的标注.
5.有关信息浮窗的⽅法:
openInfoWindow(point, node, opts?)在指定的地理点打开⼀个简单的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以DOM节点的形式给定.
openInfoWindowHtml(point, html, opts?)在指定的地理点打开⼀个简单的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以HTML⽂本的形式给定.
openInfoWindowTabs(point, tabs, opts?)在指定的地理点打开⼀个分标签的信息浮窗.滑动地图以保证
打开的信息浮窗可见.信息浮窗的内容以DOM节点的形式给定.
openInfoWindowTabsHtml(point, tabs, opts?)在指定的地理点打开⼀个分标签的信息浮窗.滑动地图以保证打开的信息浮窗可见.信息浮窗的内容以HTML⽂本的形式给定.
showMapBlowup(point, opts?)在指定的地理点打开⼀个显⽰指定点更近的视图的信息浮窗.制作奖章
cloInfoWindow()关闭当前打开的信息浮窗.
getInfoWindow() 返回类型GInfoWindow 返回地图的信息浮窗对象.假如当前并不存在信息浮窗,则创建⼀个信息浮窗⽽不显⽰它.这个操作并不被enableInfoWindow()影响.
6.控件的⽅法:
addControl(GControl)添加⼀个google地图的控件
RemoveControl(GControl)删除⼀个google地图的控件
7. ⽰例:
var map = new ElementByIdx_x_x("map"),{size:GSize(200,200), backgroundCol
or:"#FF0000"});
map.addControl(new GSmallMapControl());//添加⼀个地图左侧的缩放按钮控件
map.addControl(new GMapTypeControl());//添加地图类型控件包括普通地图、卫星地图、混合地图
map.tCenter(new GLatLng(37.4419, -122.1419), 13); //实例化⼀个维度为37.4419、经度为 -122.1419的经纬度实例,然后设置地图的中⼼。地图缩放值为13
// Add 10 markers in random locations on the map
var bounds = Bounds();//得到地图四⾯的边界值
var southWest = SouthWest();//西南的经纬度
var northEast = NorthEast();//东北的经纬度
var lngSpan = northEast.lng() - southWest.lng();//经度差
var latSpan = northEast.lat() - southWest.lat();//维度差
//实例化⼀个在本张地图中的⼀个经纬度
var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
southWest.lng() + lngSpan * Math.random());
var marker = new GMarker(point);//实例化⼀个标点
//给标点加click事件,当点击标点时弹出⼀个信息窗
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml("<b>hello</b>");
});
map.addOverlay(marker);//把标点添加到地图覆盖物
2.GMapOptions类:
这个类型包含以下4个属性
1.size
默认情况下,你创建的地图⼤⼩就是你给定的地图容器的⼤⼩,所以,通常情况下,你需要显式的声明你的地图容器的width和height属性,否则,地图是不能正常显⽰的,但是,有了size这个可选属性后,你就多了⼀个选择了。你可以在创建地图的时候直接通过size这个属性指定地图的⼤⼩,⽽不需要听命于地图容器了,即使这个地图容器已经显⽰的定义了width和height的⼤⼩。当然,size属性对应的值是⼀个GSize类型的数据,⽐如,假如给定options=
{size:GSize(400, 300)},那么,你所创建的地图⼤⼩就是400×300的⼀个矩形块,⽽和你指定的容器⼤⼩⽆关。
2.mapType
创建地图后,默认显⽰的地图类型是普通地图,假如要加上可以选择的卫星地图、地形地图等等其他类型的地图,可以使⽤ GMap2.tMapType()⽅法,但这样往往会罗列⼀堆的tMapType。GMapOptions提供了mapTypes这个可选项,通过⼀个数组就可以给地图加上多种⽀持类型,⽐如使⽤{mapTypes:
[G_NORMAL_MAP,G_SATELLITE_MAP,G_PHYSICAL_MAP]}
,你的地图就拥有三种普通、卫星、地形三种类型了。mapTypes数组中的第⼀项是地图加载的默认类型,所以,假如你想默认加载卫星地图,把
G_SATELLITE_MAP移到数组的第⼀项就可以了。
3.draggableCursor、draggingCursor
这两个选项是⽤来定义地图上你的光标类型,我把它们放在⼀起介绍不等于它们必须⼀起使⽤,你可以单独使⽤任何⼀个。其中,draggableCursor 是地图可拖拽状态(默认就是可拖拽的)下的光标,draggingCursor是拖拽地图时的光标,对应的值和你在JavaScript⾥⾯设置其他的光标时使⽤的值⼀样,⽐如,{draggableCursor:"crosshair",draggingCursor:"move"}。当然,你也可以使⽤url形式加上你⾃⼰的图标
4.backgroundColor
在地图图块的图⽚还没有传送完成之前,地图的显⽰区域默认会使⽤灰⾊填充,这个就是backgroundColor可以发挥作⽤的地⽅了,你可以把灰⾊换成其他任何符合W3C标准的颜⾊
这个和你在地图上通过ableGoogleBar()时有关系,指定你添加GoogleBar时的⼀些默认属性
⽰例:
var options = {size:GSize(400, 300), backgroundColor:"#FF0000"};
var map = new ElementByIdx_x_x("mapContainer"), options);
耐阴灌木3.GMarker类
构造函数:
小学托管1.GMarker(point, icon?, inert?) 在指定位置point使⽤指定图标icon或G_DEFAULT_ICON创建⼀个标记.假如inert参数为true,该标记将不可点击⽽且没有任何参数.(
2.50版本不再⽀持)
2.GMarker(point, opts?) 在指定位置point使⽤指定的选项GMarkerOptions创建⼀个标记.默认标记能够点击并使⽤默认图标G_DEFAULT_ICON. (从 2.50开始⽀持)
Gmarker包含的主要⽅法:
1.openInfoWindow(content, opts?) 在标记图标之上打开地图信息窗⼝。信息窗⼝的内容为 DOM 节点。仅适⽤于 GInfoWindowOptions.maxWidth 选项。
冯小怜
2. openInfoWindowHtml(content, opts?) 在标记图标之上打开地图信息窗⼝。信息窗⼝的内容显⽰为包含 HTML ⽂本的字符串。仅适⽤于GInfoWindowOptions.maxWidth 选
项。
7.tPoint(point) none 设置此标记所锚定点的地理坐标。(⾃ 2.88 开始建议不要使⽤)
8.tLatLng(point) none 设置此标记所锚定点的地理坐标。(⾃ 2.88 开始)
10.disableDragging() none 禁⽌在地图上拖拽标记。哪些是无氧运动
11.draggable() Boolean 假如已使⽤ GMarkerOptions.draggable = true 通过构造函数对标记进⾏了初始化,则返回 true。否则,返回 fal。
12.draggingEnabled() Boolean 假如当前答应⽤户在地图中拖拽标记,则返回 true。
13.tImage(url) none 请求将 url 指定的图像设置为此标记的前景图。注:不调整打印图像和阴影图像。因此,此⽅法主要是为了达到⾼亮显⽰或变暗显⽰效果,⽽不是彻底改变标记的外观。(⾃ 2.75 开始)
15.hide() none 假如当前标记可见,则隐藏标记。注:假如当前标记可见,则此函数会触发 GMarker.visibilitychanged 事件。(⾃ 2.77 开始)
16.show() none 假如当前标记不可见,则显⽰标记。注:假如当前标记不可见,则此函数会触发 GMarker.visibilitychanged 事件。(⾃ 2.77 开始)
17.isHidden() Boolean 假如当前标记不可见,则返回 true。否则,返回 fal。(⾃ 2.77 开始)
⽰例:
1.
var point = new GLatLng(pointx,pointy);
var icon = new GIcon();
icon.image = "/ridefinder/images/mm_20_red.png";
var myMarker = new GMarker(point, icon);
Icon().image);
2.
var point = new GLatLng(pointx,pointy);
我是人不是神var myMarker = new GMarker(point,{draggable:true});//可拖拽的标记
Point());
4.GPolyline类
构造函数
GPolyline(latlngs, color?, weight?, opacity?, opts?) 根据顶点数组创建折线。color 是⼀个字符串,包含⼗六进制数字、HTML 样式的颜⾊,即
#RRGGBB。weight 是以像素表⽰的线宽度。 opacity 为 0 到 1 之间的数字。该线条是消除锯齿且半透明的。
GPolyline包含的⽅法
2.46 开始)
5.hide() none 假如当前折线可见并且 GPolyline.supportsHide() 返回 true,则隐藏此线。注:假如当前折线可见,则此函数会触发
GPolyline.visibilitychanged 事件(⾃ 2.87 开始)
6.isHidden() Boolean 假如当前折线不可见,则返回 true。否则,返回 fal。(⾃ 2.87 开始)
7.show() none 假如当前折线不可见,则显⽰该线。注:假如当前折线不可见,则此函数会触发 GPolyline.visibilitychanged 事件。(⾃ 2.87 开始)
8.supportsHide() Boolean 假如当前环境下⽀持 GPolyline 对象的 GPolyline.hide(),则返回 true。否则,返回 fal。(⾃ 2.87 开始)
注:假如您想在地图⾥⾯显⽰折线,您需要在您的XHTML⽂档⾥⾯包含VML命名空间和⼀些CSS代码,这样可以令它们在IE下⾯可以正常⼯作。XHTM⽂档的开头看起来就像这
样:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; chart=UTF-8"/>
<title>My Google Maps Hack</title>
<style type="text/css">v\:* {behavior:url(#default#VML);}
</style>
<script src="/maps?file=api&v=2&key=abcdefg" type="text/javascript"></script>
</head>
5.GLatLng类
构造函数:
GLatLng(lat, lng, unbounded?) 注重纬度和经度的顺序。假如 unbounded 标记为 true,则表⽰数字以原始输⼊状态使⽤,否则纬度将在 -90 度到 +90 度之间,⽽经度在 -180 度和 +180 度之间周⽽复始。
GlatLng包含的⽅法:
lat() Number 返回以度数表⽰的纬度坐标(-90 到 +90 之间的数值)。假如在构造函数中设置了 unbounded 标记,则纬度坐标值可能超出此范围。
lng() Number 返回以度数表⽰的经度坐标(-180 到 +180 之间的数值)。假如在构造函数中设置了 unbounded 标记,则经度坐标值可能超出此范围。
6. GPoint类
GPoint 是以像素坐标表⽰的地图上的⼀点。注重:在 v2 中,它不再是以地理坐标表⽰的地⾯上的⼀个点。现在,地理坐标可以⽤ GLatLng 表⽰。
在地图坐标系统中,x 坐标向右增⼤,y 坐标向下增⼤。
注重:GPoint 的两个参数同 x 和 y 属性⼀样可访问,但最好不要修改它们,⽽是在创建新对象时使⽤不同的参数。
7. GEvent命名空间
此命名空间包含的函数可⽤于注册事件处理程序(既处理⾃定义事件也处理 DOM 事件)和触发⾃定义事件。此 API 定义的所有事件都是由
哆来咪发唆
addListener(source, event, handler) 返回GEventListener 为源对象的⾃定义事件注册事件处理程序。返回⼀个可⽤于最终注销处理程序的句柄。事件触发时,this 将被设置为源对象,同时调⽤事件处理程序。
addDomListener(source, event, handler) 返回GEventListener 为源对象的 DOM 事件注册事件处理程序。源对象必须为 DOM 节点。返回⼀个可⽤于最终注销处理程序的
句柄。事件触发时,this 被设置为源对象,同时调⽤事件处理程序。此函数将 DOM ⽅法⽤于当前浏览器,来注册事件处理程序。
removeListener(handle)删除使⽤ addListener() 或 addDomListener() 安装的处理程序。
clearListeners(source, event)删除使⽤ addListener() 或 addDomListener() 为给定事件在给定对象上安装的所有处理程序。
clearInstanceListeners(source)删除使⽤ addListener() 或 addDomListener() 为所有事件在给定对象上安装的所有处理程序。
trigger(source, event, ...)使源对象触发⾃定义事件。将 event 后所有剩余的可选参数依次输⼊给事件处理程序作为参数。
bind(source, event, object, method)返回GEventListener 将给定对象的⽅法调⽤注册为源对象⾃定义事件的处理程序。返回⼀个可⽤于最终注销处理程序的句柄。
bindDom(source, event, object, method)返回 GEventListener 将给定对象的⽅法调⽤注册为源对象⾃定义事件的处理程序。返回⼀个可⽤于最终注销处理程序的句柄。
callback(object, method) Function 返回在 object 上调⽤ method 的 closure。
callbackArgs(object, method, ...) Function 返回在 object 上调⽤ method 的closure。调⽤返回的函数时,将 method 后⾯所有余下的可选参数依次输⼊method 作为参数。
8.GClientGeocoder地址解析类:
此类⽤于和 Google 服务器建⽴直接通讯,以获得⽤户指定地址的地理位置信息。另外,地理解析器
可维护⾃⼰的地址缓存,可以⽆需与服务器通讯⽽回答反复的查询。注重:⽬前中国地图地址解析器只⽀持市/县/区级别的地址。
getLatLng(address, callback) 给 Google 服务器发送请求,对指定的地址进⾏地址解析。假如地址已成功定位,则⽤ GLatLng 点调⽤⽤户指定的回调函数。否则,向回调函数提供⼀个 null 点。假如地址不明确,则仅向回调函数传送最匹配的点。(⾃ 2.55 开始)
getLocations(address, callback) 给 Google 服务器发送请求,对指定的地址进⾏地址解析。包含状态代码的答复,假如答复成功,则向⽤户指定的回调函数传送⼀个或多个 Placemark 对象。与 LatLng ⽅法不同,回调函数可以通过检查 Status 字段的代码值确定失败原因。(⾃ 2.55 开始)⽰例:
var map = new ElementByIdx_x_x("map"));
var geocoder = new GClientGeocoder();
var address="五道⼝";
if (!point)
{
alert(address + " not found");
}
el
{
map.tCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
alert(point);
}
});
三:下⾯是Google API⾃带控件
GLargeMapControl:放⼤缩⼩调节杆
GMapTypeControl:地图和卫星图⽚的切换功能
GSmallMapControl:GLargeMapControl的精简版,去掉了缩放的调节杆保留了缩放按钮
GSmallZoomControl:只包括缩放按钮,去掉了GLargeMapControl⾥其他的所有控制
GScaleControl:⽐例尺控件
四:减少浏览器内存泄露
Google Maps API⿎舞使⽤闭包/Closures,Maps API的第⼆版引⼊⼀个GUnload()函数,⽤于最⼤限度地消除可能引发内存泄露的循环引⽤。您应该在页⾯的unload事件中调
⽤GUnload()函数来降低您的应⽤程序内存泄露的风险:<body onunload="GUnload()">这个函数确实可以消除Google地图在Internet Explorer下的内存泄露,但是假如您⽐较关⼼
内存消耗问题,您仍然应该⽤Drip之类的⼯具测试您⾃⼰⽹站的内存泄露情况。
五:浏览器兼容性
六:相关资料的⽹址: