Map
API中的核心类,用于创建地图实例
构造函数
创建Map类的语法:
new TMap.Map(domId, options);
参数:
-
domId
: {string
} -
(必填) 地图DOM容器的id,创建地图需要在页面中创建一个空div元素,传入该div元素的id
-
options
: {MapOptions
} -
地图参数,对象规范详见MapOptions
方法
方法 | 返回值 | 说明 |
---|---|---|
setCenter(center:LatLng)
|
this
|
设置地图中心点。 |
setZoom(zoom:Number)
|
this
|
设置地图缩放级别。 |
setRotation(rotation:Number)
|
this
|
设置地图水平面上的旋转角度。 |
setPitch(pitch:Number)
|
this
|
设置地图俯仰角。 |
setScale(scale:Number)
|
this
|
设置地图显示比例。 |
setOffset(offset: Object)
|
this
|
设置地图与容器偏移量,Object的格式为{x:Number, y:Number},x方向向右偏移为正值,y方向向下偏移为正值。 |
setDraggable(draggable:Boolean)
|
this
|
设置地图是否支持拖拽。 |
setScrollable(scrollable:Boolean)
|
this
|
设置地图是否支持滚轮缩放。 |
setDoubleClickZoom(doubleClickZoom: Boolean)
|
this
|
设置地图是否支持双击缩放 |
setBoundary(boundary:LatLngBounds)
|
this
|
设置地图限制边界,拖拽、缩放等操作无法将地图移动至边界外 |
setViewMode(viewMode: String)
|
this
|
设置地图视图模式 |
setBaseMap(baseMap:BaseMap | BaseMap[])
|
this
|
动态设置地图底图,BaseMap目前支持矢量底图(VectorBaseMap)、卫星底图(SatelliteBaseMap)、路况底图(TrafficBaseMap),可以使用数组形式实现多种底图叠加。 |
setMapStyleId(mapStyleId: String)
|
this
|
动态设置个性化地图样式 |
panTo(latLng:LatLng, opts:EaseOptions)
|
this
|
将地图中心平滑移动到指定的经纬度坐标。 |
zoomTo(zoom:Number, opts:EaseOptions)
|
this
|
平滑缩放到指定级别 |
rotateTo(rotation:Number, opts:EaseOptions)
|
this
|
平滑旋转到指定角度 |
pitchTo(pitch:Number, opts:EaseOptions)
|
this
|
平滑变化到指定俯仰角度 |
easeTo(mapStatus:Object, opts:EaseOptions)
|
this
|
平滑过渡到指定状态,mapStatus为key-value格式,可以设定center、zoom、rotation、pitch。 |
fitBounds(bounds:LatLngBounds,options:FitBoundsOptions)
|
this
|
根据指定的地理范围调整地图视野 |
getCenter()
|
LatLng
|
获取地图中心。 |
getZoom()
|
Number
|
获取地图缩放级别。 |
getRotation()
|
Number
|
获取地图水平面上的旋转角度。 |
getPitch()
|
Number
|
获取地图俯仰角度。 |
getBounds()
|
LatLngBounds
|
返回当前地图的视野范围,该视野范围实际会大于等于地图的可视区域范围,尤其是当地图发生旋转和俯仰变化时,得到的是一个当前视野范围的最小外包矩形。 |
getScale()
|
Number
|
获取地图显示比例。 |
getOffset()
|
Object
|
获取地图与容器的偏移量Object的格式为 {x:Number, y:Number},x方向向右偏移为正值,y方向向下偏移为正值。 |
getDraggable()
|
Boolean
|
获取地图是否支持拖拽。 |
getScrollable()
|
Boolean
|
获取地图是否支持滚轮缩放。 |
getDoubleClickZoom()
|
Boolean
|
获取地图是否支持双击缩放 |
getBoundary()
|
LatLngBounds
|
获取地图限制边界 |
addControl(control:Control)
|
this
|
添加控件到地图,传入控件对象 |
removeControl(id: String)
|
this
|
从地图容器移出控件,默认控件的id列表参考 DEFAULT_CONTROL_ID |
getControl(id: String)
|
Control |
根据控件id获取对应的控件对象,默认控件的id列表参考DEFAULT_CONTROL_ID |
getViewMode()
|
String
|
获取地图视图模式 |
getBaseMap()
|
BaseMap | BaseMap[]
|
获取当前的底图类型 |
getIndoorManager()
|
IndoorManager
|
获取室内地图管理器 |
destroy()
|
|
销毁地图 |
projectToContainer(latLng: LatLng)
|
Point
|
经纬度坐标转换为容器像素坐标,容器像素坐标系以地图容器左上角点为原点 |
unprojectFromContainer(pixel: Point)
|
LatLng
|
容器像素坐标转换为经纬度坐标 |
on(eventName:String, listener:Function)
|
this
|
添加listener到eventName事件的监听器数组中。 |
off(eventName:String, listener:Function)
|
this
|
从eventName事件的监听器数组中移除指定的listener。 |
事件
事件名 | 参数 | 说明 |
---|---|---|
idle
|
none
|
地图进入空闲状态时触发。 |
tilesloaded
|
none
|
当地图容器中可见的瓦片加载完后会触发此事件。 |
click
|
evt:MapEvent
|
鼠标左键单击地图时触发,移动与桌面web都触发。 |
dblclick
|
evt:MapEvent
|
鼠标左键双击地图时触发,移动与桌面web都触发。 |
mousedown
|
evt:MapEvent
|
鼠标在地图区域中左键按下时触发,只在桌面浏览器中触发。 |
mouseup
|
evt:MapEvent
|
鼠标在地图区域中左键按下又弹起时触发,只在桌面浏览器中触发。 |
mousemove
|
evt:MapEvent
|
鼠标在地图上移动时触发,只在桌面浏览器中触发。 |
touchstart
|
evt:MapEvent
|
在地图区域触摸开始时触发,只在移动浏览器中触发。 |
touchmove
|
evt:MapEvent
|
在地图区域触摸移动时触发,只在移动浏览器中触发。 |
touchend
|
evt:MapEvent
|
在地图区域触摸结束时触发,只在移动浏览器中触发。 |
dragstart
|
none
|
地图开始发生拖拽交互时触发。 |
drag
|
none
|
地图发生拖拽交互时触发,拖拽交互可能产生pan,rotate, picth事件。 |
dragend
|
none
|
地图拖拽交互结束时触发。 |
panstart
|
none
|
地图开始平移时触发。 |
pan
|
none
|
地图移动时触发。 |
panend
|
none
|
地图平移结束时触发。 |
rotatestart
|
none
|
地图开始旋转时触发。 |
rotate
|
none
|
地图旋转时触发。 |
rotateend
|
none
|
地图旋转结束时触发。 |
pitchstart
|
none
|
地图开始发生俯仰角变化时触发。 |
pitch
|
none
|
地图俯仰角变化时触发。 |
pitchend
|
none
|
地图俯仰角变化结束时触发。 |
zoom
|
none
|
地图缩放时触发。 |
resize
|
none
|
地图容器大小发生变化时触发 |
center_changed
|
none
|
当地图中心点变化时会触发此事件。 |
bounds_changed
|
none
|
当可视区域范围更改时会触发此事件。 |
scale_changed
|
none
|
地图显示比例变化时触发此事件。 |
control_added
|
none
|
给map添加控件的时候触发此事件。 |
control_removed
|
none
|
从map移出控件的时候触发此事件。 |
实例
例子 1:
本示例中,介绍如何在div容器中创建地图
function initMap() { var container = document.getElementById("container"); var center = new TMap.LatLng(39.984104, 116.307503); //初始化地图 var map = new TMap.Map(container, { rotation: 20,//设置地图旋转角度 pitch:30, //设置俯仰角度(0~45) zoom:12,//设置地图缩放级别 center: center//设置地图中心点坐标 }); }
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>简单地图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script> <style type="text/css"> html, body { height: 100%; margin: 0px; padding: 0px } #container { width: 100%; height: 100% } </style> </head> <body onload="initMap()"> <div id="container"></div> <script type="text/javascript"> function initMap() { var container = document.getElementById("container"); var center = new TMap.LatLng(39.984104, 116.307503); //初始化地图 var map = new TMap.Map(container, { rotation: 20,//设置地图旋转角度 pitch:30, //设置俯仰角度(0~45) zoom:12,//设置地图缩放级别 center: center//设置地图中心点坐标 }); } </script> </body> </html>
例子 2:
本示例中,介绍如何异步加载api展现地图
function initMap() { var map = new TMap.Map("container", { pitch:45, zoom:12, center: new TMap.LatLng(39.984104, 116.307503) }); } function loadScript() { //创建script标签,并设置src属性添加到body中 var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init"; document.body.appendChild(script); } window.onload = loadScript;
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>异步加载地图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <style type="text/css"> html, body { height: 100%; margin: 0px; padding: 0px } #container { width: 100%; height: 100% } </style> </head> <body> <div id="container"></div> <script> function initMap() { var map = new TMap.Map("container", { pitch:45, zoom:12, center: new TMap.LatLng(39.984104, 116.307503) }); } function loadScript() { //创建script标签,并设置src属性添加到body中 var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://jsapi_v3.sparta.html5.qq.com/api/gljs?v=3&key=6LLBZ-QMLCX-HNA4L-T3ADN-4O3V5-BFFLB&callback=init"; document.body.appendChild(script); } window.onload = loadScript; </script> </body> </html>