qq.maps.Map 类

继承自MVCObject

API中的核心类,用来在网页中创建一个地图。

构造函数

创建Map类的语法:

  1. 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容器中创建地图

JavaScript
  1. var map = new qq.maps.Map(document.getElementById("container"), {
  2. // 地图的中心地理坐标。
  3. center: new qq.maps.LatLng(39.916527, 116.397128)
  4. });
JavaScript+HTML
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>腾讯地图-简单地图示例</title>
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  8. <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
  9. <style type="text/css">
  10. html,
  11. body {
  12. height: 100%;
  13. margin: 0px;
  14. padding: 0px
  15. }
  16. #container {
  17. width: 100%;
  18. height: 100%
  19. }
  20. </style>
  21. </head>
  22.  
  23. <body>
  24. <div id="container"></div>
  25. <script type="text/javascript">
  26. var map = new qq.maps.Map(document.getElementById("container"), {
  27. // 地图的中心地理坐标。
  28. center: new qq.maps.LatLng(39.916527, 116.397128)
  29. });
  30. </script>
  31. </body>
  32.  
  33. </html>

例子 2:

本示例中,介绍如何异步加载api展现地图

JavaScript
  1. function init() {
  2. var myLatlng = new qq.maps.LatLng(39.916527, 116.397128);
  3. var myOptions = {
  4. zoom: 8,
  5. center: myLatlng
  6. };
  7. var map = new qq.maps.Map(document.getElementById("container"), myOptions);
  8. }
  9.  
  10. function loadScript() {
  11. var script = document.createElement("script");
  12. script.type = "text/javascript";
  13. script.src = "https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init";
  14. document.body.appendChild(script);
  15. }
JavaScript+HTML
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>腾讯地图</title>
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  8. <style type="text/css">
  9. html,
  10. body {
  11. height: 100%;
  12. margin: 0px;
  13. padding: 0px
  14. }
  15. #container {
  16. width: 100%;
  17. height: 100%
  18. }
  19. </style>
  20. </head>
  21.  
  22. <body onload="loadScript()">
  23. <div id="container"></div>
  24. <script>
  25. function init() {
  26. var myLatlng = new qq.maps.LatLng(39.916527, 116.397128);
  27. var myOptions = {
  28. zoom: 8,
  29. center: myLatlng
  30. };
  31. var map = new qq.maps.Map(document.getElementById("container"), myOptions);
  32. }
  33.  
  34. function loadScript() {
  35. var script = document.createElement("script");
  36. script.type = "text/javascript";
  37. script.src = "https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init";
  38. document.body.appendChild(script);
  39. }
  40. </script>
  41. </body>
  42.  
  43. </html>

例子 3:

本示例中,介绍了地图的一些方法及事件

JavaScript
  1. function init() {
  2. var sw = new qq.maps.LatLng(39.88795, 116.28666); //西南角坐标
  3. var ne = new qq.maps.LatLng(39.96693, 116.49369);; //东北角坐标
  4. var latlngBounds = new qq.maps.LatLngBounds(sw ,ne); //矩形的地理坐标范围
  5.  
  6. //div容器
  7. var container = document.getElementById("container");
  8. var centerDiv = document.getElementById("centerDiv");
  9. var zoomDiv = document.getElementById("zoomDiv");
  10. var fitBoundsDiv = document.getElementById("fitBoundsDiv");
  11. var containerDiv = document.getElementById("containerDiv");
  12. var mapTypeId = document.getElementById("mapTypeId");
  13.  
  14.  
  15. //初始化地图
  16. var map = new qq.maps.Map(container, {
  17. // 地图的中心地理坐标。
  18. center: new qq.maps.LatLng(39.916527, 116.397128),
  19. zoom: 13
  20. });
  21.  
  22. //根据指定的范围调整地图视野。
  23. map.fitBounds(latlngBounds);
  24. //当可视区域范围更改时会触发此事件。返回当前地图的视野范围。
  25. qq.maps.event.addListener(map, 'bounds_changed', function() {
  26. fitBoundsDiv.innerHTML = "地图的可视范围为:" + map.getBounds();
  27. });
  28.  
  29.  
  30. //返回地图当前中心点地理坐标。
  31. centerDiv.innerHTML = "地图中心为:" + map.getCenter();
  32. //当地图中心属性更改时会触发此事件。
  33. qq.maps.event.addListener(map, 'center_changed', function() {
  34. centerDiv.innerHTML = "地图中心为:" + map.getCenter();
  35. });
  36.  
  37.  
  38. //返回地图缩放级别。
  39. zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
  40. //当地图缩放级别更改时会触发此事件。
  41. qq.maps.event.addListener(map, 'zoom_changed', function() {
  42. zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
  43. });
  44.  
  45.  
  46. //返回当前地图所在的 HTML 容器。
  47. containerDiv.innerHTML = "地图所在的 HTML 容器为:" + map.getContainer();
  48.  
  49.  
  50. //返回当前地图类型ID。
  51. mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
  52. //当 mapTypeId 属性更改时会触发此事件。
  53. qq.maps.event.addListener(map, 'maptypeid_changed', function() {
  54. mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
  55. });
  56.  
  57.  
  58. var times = 0;
  59. var oInterval = setInterval(function() {
  60.  
  61. //panBy()将地图中心移动一段指定的距离(以像素为单位)。
  62. map.panBy(-100, 100);
  63.  
  64. //zoomBy()将地图缩放到指定的缩放比例(每次所增加的数值)。
  65. map.zoomBy(5);
  66. times++;
  67. if (times >= 1) {
  68. clearInterval(oInterval)
  69. }
  70. }, 3 * 1000);
  71.  
  72.  
  73. setTimeout(function() {
  74.  
  75. //panTo()将地图中心移动到指定的经纬度坐标。
  76. map.panTo(new qq.maps.LatLng(39.9, 116.4));
  77.  
  78. //zoomTo()将地图缩放到指定的级别。
  79. map.zoomTo(15);
  80.  
  81. }, 8 * 1000);
  82.  
  83.  
  84. setTimeout(function() {
  85. //setCenter()设置地图中心点坐标。
  86. map.setCenter(new qq.maps.LatLng(30, 117));
  87.  
  88. //setZoom()设置地图缩放级别。
  89. map.setZoom(6);
  90.  
  91. //setMapTypeId()设置地图类型。
  92. map.setMapTypeId(qq.maps.MapTypeId.HYBRID);
  93.  
  94. }, 15 * 1000);
  95.  
  96.  
  97. setTimeout(function() {
  98.  
  99. //设置地图参数。
  100. map.setOptions({
  101. keyboardShortcuts: false,
  102. scrollwheel: false
  103. });
  104.  
  105. }, 30 * 1000);
  106. }
JavaScript+HTML
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>腾讯地图-简单地图示例</title>
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  8. <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
  9. <style type="text/css">
  10. * {
  11. margin: 0px;
  12. padding: 0px;
  13. }
  14. body,
  15. button,
  16. input,
  17. select,
  18. textarea {
  19. font: 12px/22px Verdana, Helvetica, Arial, sans-serif;
  20. }
  21. html,
  22. body {
  23. height: 100%;
  24. margin: 0px;
  25. padding: 0px;
  26. }
  27. #container {
  28. width: 100%;
  29. height: 70%
  30. }
  31. body div {
  32. text-indent: 20px;
  33. }
  34. </style>
  35. </head>
  36.  
  37. <body onload="init()">
  38. <div id="container"></div>
  39. <div>当3秒后,地图中心移动一段指定的距离,地图缩放到加上指定的数值后的缩放级别。</div>
  40. <div>当8秒后,将地图中心移动到指定的经纬度坐标,将地图缩放到指定的级别。</div>
  41. <div>当15秒后,设置地图中心,设置地图的缩放级别,设置地图的id。</div>
  42. <div>当30秒后,设置地图上禁用了键盘操作功能和鼠标操作功能。</div>
  43. <div></div>
  44. <div id="fitBoundsDiv"></div>
  45. <div id="centerDiv"></div>
  46. <div id="zoomDiv"></div>
  47. <div id="containerDiv"></div>
  48. <div id="mapTypeIdDiv"></div>
  49. <div id="projection"></div>
  50.  
  51. <script type="text/javascript">
  52. function init() {
  53. var sw = new qq.maps.LatLng(39.88795, 116.28666); //西南角坐标
  54. var ne = new qq.maps.LatLng(39.96693, 116.49369);; //东北角坐标
  55. var latlngBounds = new qq.maps.LatLngBounds(sw ,ne); //矩形的地理坐标范围
  56.  
  57. //div容器
  58. var container = document.getElementById("container");
  59. var centerDiv = document.getElementById("centerDiv");
  60. var zoomDiv = document.getElementById("zoomDiv");
  61. var fitBoundsDiv = document.getElementById("fitBoundsDiv");
  62. var containerDiv = document.getElementById("containerDiv");
  63. var mapTypeId = document.getElementById("mapTypeId");
  64.  
  65.  
  66. //初始化地图
  67. var map = new qq.maps.Map(container, {
  68. // 地图的中心地理坐标。
  69. center: new qq.maps.LatLng(39.916527, 116.397128),
  70. zoom: 13
  71. });
  72.  
  73. //根据指定的范围调整地图视野。
  74. map.fitBounds(latlngBounds);
  75. //当可视区域范围更改时会触发此事件。返回当前地图的视野范围。
  76. qq.maps.event.addListener(map, 'bounds_changed', function() {
  77. fitBoundsDiv.innerHTML = "地图的可视范围为:" + map.getBounds();
  78. });
  79.  
  80.  
  81. //返回地图当前中心点地理坐标。
  82. centerDiv.innerHTML = "地图中心为:" + map.getCenter();
  83. //当地图中心属性更改时会触发此事件。
  84. qq.maps.event.addListener(map, 'center_changed', function() {
  85. centerDiv.innerHTML = "地图中心为:" + map.getCenter();
  86. });
  87.  
  88.  
  89. //返回地图缩放级别。
  90. zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
  91. //当地图缩放级别更改时会触发此事件。
  92. qq.maps.event.addListener(map, 'zoom_changed', function() {
  93. zoomDiv.innerHTML = "地图缩放级别为:" + map.getZoom();
  94. });
  95.  
  96.  
  97. //返回当前地图所在的 HTML 容器。
  98. containerDiv.innerHTML = "地图所在的 HTML 容器为:" + map.getContainer();
  99.  
  100.  
  101. //返回当前地图类型ID。
  102. mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
  103. //当 mapTypeId 属性更改时会触发此事件。
  104. qq.maps.event.addListener(map, 'maptypeid_changed', function() {
  105. mapTypeIdDiv.innerHTML = "地图类型ID为:" + map.getMapTypeId();
  106. });
  107.  
  108.  
  109. var times = 0;
  110. var oInterval = setInterval(function() {
  111.  
  112. //panBy()将地图中心移动一段指定的距离(以像素为单位)。
  113. map.panBy(-100, 100);
  114.  
  115. //zoomBy()将地图缩放到指定的缩放比例(每次所增加的数值)。
  116. map.zoomBy(5);
  117. times++;
  118. if (times >= 1) {
  119. clearInterval(oInterval)
  120. }
  121. }, 3 * 1000);
  122.  
  123.  
  124. setTimeout(function() {
  125.  
  126. //panTo()将地图中心移动到指定的经纬度坐标。
  127. map.panTo(new qq.maps.LatLng(39.9, 116.4));
  128.  
  129. //zoomTo()将地图缩放到指定的级别。
  130. map.zoomTo(15);
  131.  
  132. }, 8 * 1000);
  133.  
  134.  
  135. setTimeout(function() {
  136. //setCenter()设置地图中心点坐标。
  137. map.setCenter(new qq.maps.LatLng(30, 117));
  138.  
  139. //setZoom()设置地图缩放级别。
  140. map.setZoom(6);
  141.  
  142. //setMapTypeId()设置地图类型。
  143. map.setMapTypeId(qq.maps.MapTypeId.HYBRID);
  144.  
  145. }, 15 * 1000);
  146.  
  147.  
  148. setTimeout(function() {
  149.  
  150. //设置地图参数。
  151. map.setOptions({
  152. keyboardShortcuts: false,
  153. scrollwheel: false
  154. });
  155.  
  156. }, 30 * 1000);
  157. }
  158. </script>
  159. </body>
  160.  
  161. </html>