拥有一个免费的API Key之后就可以正式调用Google的API了进行开发了。
创建一个简单的 Google 地图,以下是显示了英国伦敦的 Google 地图:
<html>
<head>
<script
src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
</script>
<script>
function initialize()
{
var mapProp = {
center:new google.maps.LatLng(51.508742,-0.120850),
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
}
google.maps.event.addDomListener(window, \'load\', initialize);
</script>
</head>
<body>
<div id="googleMap" style="width:500px;height:380px;"></div>
</body>
</html>
效果如如下:(可以拷贝直接运行,当然你要能够访问Google)
现在对针对上面的例子进行分析如下:
(1) 添加 Google 地图 API Key
在上面实例中第一个<script> 标签中必须包含 Google 地图 API:
<script
src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
</script>
调用类型是下面的方式,包含两个参数:
<script src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE"></script>
将google生成的 API key 放置于 key 参数中(key=YOUR_API_KEY)。
The sensor 参数是必须的,该参数用于指明应用程序是否使用一个传感器 (类似 GPS 导航) 来定位用户的位置。参数值可以设置为 true 或者 false。
HTTPS:
如果你的应用是安全的HTTP(HTTPS:HTTP Secure)应用,你可以使用 HTTPS 来加载 Google 地图 API:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE"></script>
异步加载:
同样我们也可以在页面完全载入后再加载 Google 地图 API。
以 下实例使用了 window.onload 来实现页面完全载入后加载 Google 地图 。 loadScript() 函数创建了加载 Google 地图 API <script> 标签。此外在标签的末尾添加了 callback=initialize 参数, initialize()作为回调函数会在API完全载入后执行:
function loadScript()
{
var script = document.createElement("script");
script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false&callback=initialize"; document.body.appendChild(script);
}
window.onload = loadScript;
(2) 定义地图属性
在初始化地图前,我们需要先创建一个 Map 属性对象来定义一些地图的属性:
var mapProp = {
center:new google.maps.LatLng(51.508742,-0.120850),
zoom:7,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
enter(中心点)
中心属性指定了地图的中心,该中心通过坐标(纬度,经度)在地图上创建一个中心点。
Zoom(缩放级数)
zoom 属性指定了地图的 缩放级数。zoom: 0 显示了整个地球地图的完全缩放。
MapTypeId(地图的初始类型)
mapTypeId 属性指定了地图的初始类型。
mapTypeId包括如下四种类型:
- google.maps.MapTypeId.HYBRID:显示卫星图像的主要街道透明层
- google.maps.MapTypeId.ROADMAP:显示普通的街道地图
- google.maps.MapTypeId.SATELLITE:显示卫星图像
- google.maps.MapTypeId.TERRAIN:显示带有自然特征(如地形和植被)的地图
(3) 在哪里显示 Google 地图
通常 Google 地图使用于 <div> 元素中:
<div id="googleMap" style="width:500px;height:380px;"></div>
注意: 地图将以div中设置的大小来显示地图的大小,所以我们可以在 <div> 元素中设置地图的大小。
(4) 创建一个 Map 对象
var map=new google.maps.Map(document.getElementById("googleMap")
,mapProp);
以上代码使用参数(mapProp)在<div> 元素 (id为googleMap) 创建了一个新的地图。
提示:如果想在页面中创建多个地图,你只需要添加新的地图对象即可。
以下实例定义了四个地图实例 (四个地图使用了不同的地图类型):
var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);
var map2 = new google.maps.Map(document.getElementById("googleMap2"),mapProp2);
var map3 = new google.maps.Map(document.getElementById("googleMap3"),mapProp3);
var map4 = new google.maps.Map(document.getElementById("googleMap4"),mapProp4);
(5) 加载地图
窗口载入后通过执行 initialize() 函数来初始化 Map 对象,这样可以确保在页面完全载入后再加载 Google 地图:
google.maps.event.addDomListener(window, \'load\', initialize);
附上地图Map() 构造器的使用方法及API:
例如要创建一个 Google 地图:
var map=new google.maps.Map(document.getElementById("googleMap"),mapOpt);
定义和用法
Map() 构造器创建了一个新的地图并插入到指定的HTML元素中(<div> 元素)。
语法
参数值
参数 | 描述 |
---|---|
HTMLElement | 规定要把地图放置在那个 HTML 元素中。 |
MapOptions | 带有地图初始化变量/选项的 MapOptions 对象。 |
Map() 的方法
方法 | 返回值 | 描述 |
---|---|---|
fitBounds(LatLngBounds) | None | 设置要包含给定边界的视口。 |
getBounds() | LatLng,LatLng | 返回当前视口的西南纬度/经度和东北纬度/经度。 |
getCenter() | LatLng | 返回地图的中心的纬度/经度。 |
getDiv() | Node | 返回包含地图的 DOM 对象。 |
getHeading() | number | 返回航拍图像的罗盘航向(支持 SATELLITE 和 HYBRID 地图类型)。 |
getMapTypeId() | HYBRID ROADMAP SATELLITE TERRAIN | 返回当前地图类型。 |
getProjection() | Projection | 返回当前 Projection(投影)。 |
getStreetView() | StreetViewPanorama | 返回绑定到地图的默认的 StreetViewPanorama。 |
getTilt() | number | 返回航拍图像的入射角度数(支持 SATELLITE 和 HYBRID 地图类型)。 |
getZoom() | number | 返回地图的当前缩放级别。 |
panBy(xnumber,ynumber) | None | 通过以像素计的给定距离改变地图的中心。 |
panTo(LatLng) | None | 改变地图的中心为给定的 LatLng。 |
panToBounds(LatLngBounds) | None | 将地图平移所需的最小距离以包含给定的 LatLngBounds。 |
setCenter(LatLng) | None | |
setHeading(number) | None | 设置航拍图像的罗盘方向(以度为单位进行测量),基本方向为北方。 |
setMapTypeId(MapTypeId) | None | 改变要显示的地图类型。 |
setOptions(MapOptions) | None | |
setStreetView(StreetViewPanorama) | None | 绑定一个 StreetViewPanorama 到地图上。 |
setTilt(number) | None | 设置航拍图像的入射角度数(支持 SATELLITE 和 HYBRID 地图类型)。 |
setZoom(number) | None |
Map() 的属性
属性 | 类型 | 描述 |
---|---|---|
controls | Array.<MVCArray.<Node>> | 要附加到地图上的额外控件。 |
mapTypes | MapTypeRegistry | 按字符串 ID 划分的 MapType 实例的注册表。 |
overlayMapTypes | MVCArray.<MapType> | 要叠加的额外地图类型。 |
Map() 的事件
事件 | 参数 | 描述 |
---|---|---|
bounds_changed | None | 当可视区域范围更改时会触发此事件。 |
center_changed | None | 当地图 center(中心)属性更改时会触发此事件。 |
click | MouseEvent | 当用户点击地图(但不是点击标记或信息窗口)时会触发此事件。 |
dblclick | MouseEvent | 当用户双击地图时会触发此事件。请注意,触发此事件前还会触发点击事件。 |
drag | None | 当用户拖动地图时会反复触发此事件。 |
dragend | None | 当用户停止拖动地图时会触发此事件。 |
dragstart | None | 当用户开始拖动地图时会触发此事件。 |
heading_changed | None | 当地图 heading(方向)属性更改时会触发此事件。 |
idle | None | 当地图在平移或缩放之后变为闲置状态时会触发此事件。 |
maptypeid_changed | None | 当 mapTypeId 属性更改时会触发此事件。 |
mousemove | MouseEvent | 只要用户的鼠标在地图容器上移动,就会触发此事件。 |
mouseout | MouseEvent | 当用户的鼠标从地图容器上退出时会触发此事件。 |
mouseover | MouseEvent | 当用户的鼠标进入地图容器时会触发此事件。 |
projection_changed | None | 当投影更改时会触发此事件。 |
resize | None | 当地图(div)更改尺寸时会触发此事件。 |
rightclick | MouseEvent | 当用户右击地图时会触发此事件。 |
tilesloaded | None | 当可见图块载入完成后会触发此事件。 |
tilt_changed | None | 当地图 tilt(倾斜)属性更改时会触发此事件。 |
zoom_changed | None | 当地图 zoom(缩放)属性更改时会触发此事件。 |