qq.maps.Map 类
继承自MVCObject
类
API中的核心类,用来在网页中创建一个地图。
构造函数
创建Map类的语法:
- new qq.maps.Map(mapContainer, options);
参数:
-
mapContainer
: {HTMLDIVElement | string
} -
(必填) 地图容器,实例化一个地图对象需要在网页中创建一个空div元素,参数中需要传入div元素对象或div元素的id。
-
options
: {MapOptions
} -
(可选) 地图参数,通过这个参数来控制初始化地图的中心点、缩放级别、地图类型、地图样式等等。
方法
方法 | 返回值 | 说明 |
---|---|---|
fitBounds(bounds:LatLngBounds,padding)
|
none
|
LatLngBounds:根据指定的范围调整地图视野;padding(可选):可设置边距。 |
getBounds()
|
LatLngBounds
|
返回当前地图的视野范围。bounds属性是异步的,不能直接获得,第一次获取可以用bounds_changed事件来获取。 |
getCenter()
|
LatLng
|
返回地图当前中心点地理坐标。 |
getZoom()
|
Number
|
返回地图缩放级别。 |
getContainer()
|
HTMLDivElement
|
返回当前地图所在的 HTML 容器。 |
getMapTypeId()
|
MapTypeId
|
返回当前地图类型ID。 |
getProjection()
|
Projection
|
传回当前地图的投影对象。如果还未启动地图(即 mapType 仍为 Null),则结果为 Null。侦听 projection_changed 并确保其值不为 Null。 |
panBy(x:Number, y:Number)
|
none
|
将地图中心移动一段指定的距离(以像素为单位)。 |
zoomBy(deltaZoom:Number)
|
none
|
将地图缩放到当前的级别加上指定的数值后的级别。 |
panTo(latLng:LatLng)
|
none
|
将地图中心移动到指定的经纬度坐标。 |
zoomTo(zoom:Number)
|
none
|
将地图缩放到指定的级别。 |
setCenter(latLng:LatLng)
|
none
|
设置地图中心点坐标。 |
setZoom(zoom:Number)
|
none
|
设置地图缩放级别。 |
setMapTypeId(mapTypeId:MapTypeId)
|
none
|
设置地图类型ID。 |
setOptions(options:MapOptions)
|
none
|
设置地图参数。 |
属性
名称 | 类型 | 说明 |
---|---|---|
controls
|
Array.<MVCArray.<HTMLDivElement>>
|
在地图上添加自定义控件。 |
mapTypes
|
MapTypeRegistry
|
通过Id注册MapType实例。 |
overlayMapTypes
|
MVCArray.<MapType>
|
添加用户自定义的叠加地图类型。 |
事件
事件名 | 参数 | 说明 |
---|---|---|
click
|
event:MouseEvent
|
当用户点击地图(但不是点击标记或信息窗口)时会触发此事件。 |
dblclick
|
event:MouseEvent
|
当用户双击地图时会触发此事件。 |
rightclick
|
event:MouseEvent
|
鼠标右键点击地图时触发此事件。 |
mouseover
|
event:MouseEvent
|
当用户的鼠标进入地图容器时会触发此事件。 |
mouseout
|
event:MouseEvent
|
当用户的鼠标从地图容器上退出时会触发此事件。 |
mousemove
|
event:MouseEvent
|
用户的鼠标在地图容器上移动,触发此事件。 |
drag
|
none
|
当用户拖动地图时会反复触发此事件。 |
dragstart
|
none
|
当用户开始拖动地图时会触发此事件。 |
dragend
|
none
|
当用户停止拖动地图时会触发此事件。 |
longpress
|
event:MouseEvent
|
当用户长按地图时会触发此事件。 |
bounds_changed
|
none
|
当可视区域范围更改时会触发此事件。 |
center_changed
|
none
|
当地图中心属性更改时会触发此事件。 |
zoom_changed
|
none
|
当地图缩放级别更改时会触发此事件。 |
maptypeid_changed
|
none
|
当 mapTypeId 属性更改时会触发此事件。 |
projection_changed
|
none
|
当投影更改时会触发此事件。 |
idle
|
none
|
如果地图在平移或缩放之后变为闲置状态,则会触发此事件。 |
tilesloaded
|
none
|
当地图容器中可见的瓦片加载完后会触发此事件。 |
resize
|
none
|
当地图容器更改大小时,开发人员需主动触发此事件:qq.maps.event.trigger(map, 'resize')。 |
实例
例子 1:
本示例中,介绍如何在div容器中创建地图
- var map = new qq.maps.Map(document.getElementById("container"), {
- // 地图的中心地理坐标。
- center: new qq.maps.LatLng(39.916527, 116.397128)
- });
例子 2:
本示例中,介绍如何异步加载api展现地图
- function init() {
- var myLatlng = new qq.maps.LatLng(39.916527, 116.397128);
- var myOptions = {
- zoom: 8,
- center: myLatlng
- };
- var map = new qq.maps.Map(document.getElementById("container"), myOptions);
- }
- function loadScript() {
- var script = document.createElement("script");
- script.type = "text/javascript";
- script.src = "https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init";
- document.body.appendChild(script);
- }
例子 3:
本示例中,介绍了地图的一些方法及事件
- function init() {
- var sw = new qq.maps.LatLng(39.88795, 116.28666); //西南角坐标
- var ne = new qq.maps.LatLng(39.96693, 116.49369);; //东北角坐标
- var latlngBounds = new qq.maps.LatLngBounds(sw ,ne); //矩形的地理坐标范围
- //div容器
- var container = document.getElementById("container");
- var centerDiv = document.getElementById("centerDiv");
- var zoomDiv = document.getElementById("zoomDiv");
- var fitBoundsDiv = document.getElementById("fitBoundsDiv");
- var containerDiv = document.getElementById("containerDiv");
- var mapTypeId = document.getElementById("mapTypeId");
- //初始化地图
- var map = new qq.maps.Map(container, {
- // 地图的中心地理坐标。
- center: new qq.maps.LatLng(39.916527, 116.397128),
- zoom: 13
- });
- //根据指定的范围调整地图视野。
- map.fitBounds(latlngBounds);
- //当可视区域范围更改时会触发此事件。返回当前地图的视野范围。
- qq.maps.event.addListener(map, 'bounds_changed', function() {
- fitBoundsDiv.innerHTML = "地图的可视范围为:" + map.getBounds();
- });
- //返回地图当前中心点地理坐标。
- centerDiv.innerHTML = "地图中心为:" + map.getCenter();
- //当地图中心属性更改时会触发此事件。
- qq.maps.event.addListener(map, 'center_changed', function() {
- centerDiv.innerHTML = "地图中心为:" + map.getCenter();
- });
- //返回地图缩放级别。
- zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
- //当地图缩放级别更改时会触发此事件。
- qq.maps.event.addListener(map, 'zoom_changed', function() {
- zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
- });
- //返回当前地图所在的 HTML 容器。
- containerDiv.innerHTML = "地图所在的 HTML 容器为:" + map.getContainer();
- //返回当前地图类型ID。
- mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
- //当 mapTypeId 属性更改时会触发此事件。
- qq.maps.event.addListener(map, 'maptypeid_changed', function() {
- mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
- });
- var times = 0;
- var oInterval = setInterval(function() {
- //panBy()将地图中心移动一段指定的距离(以像素为单位)。
- map.panBy(-100, 100);
- //zoomBy()将地图缩放到指定的缩放比例(每次所增加的数值)。
- map.zoomBy(5);
- times++;
- if (times >= 1) {
- clearInterval(oInterval)
- }
- }, 3 * 1000);
- setTimeout(function() {
- //panTo()将地图中心移动到指定的经纬度坐标。
- map.panTo(new qq.maps.LatLng(39.9, 116.4));
- //zoomTo()将地图缩放到指定的级别。
- map.zoomTo(15);
- }, 8 * 1000);
- setTimeout(function() {
- //setCenter()设置地图中心点坐标。
- map.setCenter(new qq.maps.LatLng(30, 117));
- //setZoom()设置地图缩放级别。
- map.setZoom(6);
- //setMapTypeId()设置地图类型。
- map.setMapTypeId(qq.maps.MapTypeId.HYBRID);
- }, 15 * 1000);
- setTimeout(function() {
- //设置地图参数。
- map.setOptions({
- keyboardShortcuts: false,
- scrollwheel: false
- });
- }, 30 * 1000);
- }