Google地图接口API之地图基础(二)

时间:2024-04-15 13:12:27

拥有一个免费的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> 元素)。


语法

new google.maps.Map(HTMLElement,MapOptions)

参数值

参数描述
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(缩放)属性更改时会触发此事件。