Skip to content

Map 类

Map 类是地图 API 的核心类,用于实例化一个地图。请注意 WebGL 版本的地图 API 的命名空间是 BMapGL

示例

javascript
const map = new BMapGL.Map('container');

构造函数

构造函数描述
Map(container: String | HTMLElement, opts: MapOptions)在指定的容器内创建地图实例,之后需要调用 Map.centerAndZoom() 方法对地图进行初始化。未进行初始化的地图将不能进行任何操作

方法

地图控制方法

方法返回值描述
enableDragging()none启用地图拖拽,默认启用
disableDragging()none禁用地图拖拽
enableInertialDragging()none启用地图惯性拖拽,默认禁用
disableInertialDragging()none禁用地图惯性拖拽
enableScrollWheelZoom()none允许地图可被鼠标滚轮缩放,默认禁用
disableScrollWheelZoom()none禁止地图被鼠标滚轮缩放
enableContinuousZoom()none开启双击平滑缩放效果
disableContinuousZoom()none关闭双击平滑缩放效果
enableResizeOnCenter()none开启图区 resize 中心点不变
disableResizeOnCenter()none关闭图区 resize 中心点不变
enableDoubleClickZoom()none启用地图双击缩放,左键双击放大、右键双击缩小
disableDoubleClickZoom()none取消地图双击缩放
enableKeyboard()none启用键盘操作,默认禁用。键盘的上、下、左、右键可连续移动地图。同时按下其中两个键可使地图进行对角移动。PgUp、PgDn、Home和End键会使地图平移其1/2的大小。+、-键会使地图放大或缩小一级
disableKeyboard()none禁用键盘操作
enablePinchToZoom()none启用双指缩放地图
disablePinchToZoom()none禁用双指缩放地图

地图视角控制

方法返回值描述
setHeading()number设置地图旋转角度
setTilt()number设置地图的倾斜角度
enableAutoResize()none启用自动适应容器尺寸变化,默认启用
disableAutoResize()none禁用自动适应容器尺寸变化
checkResize()none地图容器变化后调用此方法用来重新铺图
setDisplayOptions({option: displayOptions})none设置地图元素
resize()none强制地图调整尺寸,此时会以当前容器尺寸为基准重新计算视野所需图像数据并重新绘制。当关闭自动调整视野时(enableAutoResize 配置),需要调用此方法来强制地图刷新
getSize()Size返回地图当前尺寸,以像素表示
getContainerSize()Size获取地图容器尺寸
getZoomUnits()Number返回当前地图级别,一个像素对应多少单位的平面墨卡托坐标

坐标转换方法

方法返回值描述
pixelToPoint(pixel: Pixel)Point像素坐标转换为经纬度坐标
pointToPixel(point: Point)Pixel经纬度坐标转换为像素坐标
lnglatToMercator(lng: Number, lat: Number)[McLng, McLat]经纬度球体坐标转换为墨卡托平面坐标
mercatorToLnglat(McLng: Number, lat: McLat)[lng, lat]墨卡托平面坐标转换为经纬度球体坐标

地图状态方法

方法返回值描述
isLoaded()boolean返回地图是否经过 centerAndZoom 进行初始化
getContainer()HTMLElement返回地图的 DOM 容器元素。当创建用户自定义控件时,需要自行实现 Control.initialize() 方法,并将控件的容器元素添加到地图上,通过此方法可获得地图容器
getBounds()Bounds获取地图当前视野范围的矩形区域,以地理坐标表示。如果地图尚未初始化则返回一个空的 Bounds 实例
getCoordType()string获取地图坐标类型,为 CoordType 常量
getMapStyleId()string获取当前地图样式 id,对于内置样式则返回样式名称;对于自定义样式,则返回内部自动生成的样式 id
getPanes()MapPanes获取覆盖物容器元素,返回地图覆盖物容器对象
getInfoWindow()InfoWindow | null获取当前打开的信息窗口实例,如果当前地图没有处于打开状态信息窗口,则返回 null

鼠标样式控制

方法返回值描述
setDefaultCursor(cursor: String)none设置地图默认的鼠标指针样式。参数 cursor 应符合 CSS 的 cursor 属性规范
getDefaultCursor()String获取地图默认的鼠标指针样式,返回 cursor 值
setDraggingCursor(cursor: String)none设置拖拽地图时的鼠标指针样式。参数 cursor 应符合 CSS 的 cursor 属性规范
getDraggingCursor()String返回拖拽地图时的鼠标指针样式

缩放级别控制

方法返回值描述
setMinZoom(zoom: Number)none设置地图允许的最小级别。取值不得小于地图类型所允许的最小级别
setMaxZoom(zoom: Number)none设置地图允许的最大级别。取值不得大于地图类型所允许的最大级别
getMapType()MapTypeId返回地图类型
setMapType(mapTypeId: MapTypeId)none设置地图类型

地图视野控制

方法返回值描述
setViewport(view: Array<Point> | Viewport, viewportOptions: ViewportOptions)none根据提供的地理区域或坐标设置地图视野,调整后的视野会保证包含提供的地理区域或坐标
getViewport(view: Array<Point>, viewportOptions: ViewportOptions)Viewport根据提供的地理区域或坐标获得最佳的地图视野,返回的对象中包含 center 和 zoom 属性,分别表示地图的中心点和级别。此方法仅返回视野信息,不会将新的中心点和级别做用到当前地图上
centerAndZoom(center: Point, zoom: Number)none初始化地图。如果 center 类型为 Point 时,zoom 必须赋值,范围 3-19 级,若调用高清底图(针对移动端开发)时,zoom 可赋值范围为 3-18 级。如果 center 类型为字符串时,比如"北京",zoom 可以忽略,地图将自动根据 center 适配最佳 zoom 级别
panTo(center: Point)none将地图的中心点更改为给定的点,跳转到指定中心点进行渲染。如果该点在当前的地图视图中已经可见,则会以平滑动画的方式移动到中心点位置。可以通过配置强制移动过程不使用动画效果
panBy(x: Number, y: Number)none将地图在水平位置上移动 x 像素,垂直位置上移动 y 像素。如果指定的像素大于可视区域范围或者在配置中指定没有动画效果,则不执行滑动效果
flyTo(center: Point, zoom: Number)none飞到指定的中心点和级别,提供给定位缩放地图使用
reset()none重新设置地图,恢复地图初始化时的中心点和级别
setCenter(center: Point | String, options: Object)none设置地图中心点。center 除了可以为坐标点以外,还支持城市名。可选配置参数包括 'noAnimation: boolean' 是否禁用动画效果;'callback: function' 动画结束后调用此方法,如果没有动画则立即调用
getCenter()Point返回地图当前中心点
setZoom(zoom: Number, options)none将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。可选配置参数包括 'noAnimation:boolean' 是否禁用动画效果;'callback:function' 动画结束后会调用此方法,如果没有动画则立即调用;'zoomCenter:Point' 缩放中心点,默认以地图中心点为基准缩放
getZoom()Number返回地图当前缩放级别
zoomIn()none放大一级视图
zoomOut()none缩小一级视图

覆盖物控制

方法返回值描述
addControl(control: Control)none将控件添加到地图,一个控件实例只能向地图中添加一次
removeControl(control: Control)none从地图中移除控件。如果控件从未被添加到地图中,则该移除不起任何作用
addContextMenu(menu: ContextMenu)none添加右键菜单
removeContextMenu(menu: ContextMenu)none移除右键菜单
addOverlay(overlay: Overlay)none将覆盖物添加到地图中,一个覆盖物实例只能向地图中添加一次
removeOverlay(overlay: Overlay)none从地图中移除覆盖物。如果覆盖物从未被添加到地图中,则该移除不起任何作用
clearOverlays()none清除地图上所有覆盖物
pointToOverlayPixel(point: Point)Pixel根据地理坐标获取对应的覆盖物容器的坐标,此方法用于自定义覆盖物
overlayPixelToPoint(pixel: Pixel)Point根据覆盖物容器的坐标获取对应的地理坐标
getOverlays()Array<Overlay>获取当前地图上的所有覆盖物,返回覆盖物对象的集合

热区控制

方法返回值描述
addSpots(spots: Array, options: Object)number添加地点区域,作为地图上的虚拟可点击区域。其中参数 spots 为热区点数组,options 为可选配置参数;返回区域 id
getSpots(id: string)Array根据 id 返回地点区域数组
removeSpots(id: number)none根据 id 移除区域数组
clearSpots()none清除地点区域,此操作将清空所有虚拟可点数据
hightlightSpotByUid(uid: string, tilePosStr: string)none根据 uid 将底图上的 poi 高亮显示,其中参数 tilePosStr 为 label 的位置字符串
resetSpotStatus()none重置热区状态,即将高亮的热区点取消
addAreaSpot()none重置热区状态,即将高亮的热区点取消
getAreaSpot(id: string)Array返回地点区域数组
removeAreaSpot(id: string)none移除区域数组
clearAreaSpots()none清除地点区域,此操作将清空所有虚拟可点数据

底图标注控制

方法返回值描述
clearLabels()none清空当前 map 所有的自定义底图标注
addLabelsToMapTile(labels: Array)none在底图上添加文字,这些文字会和底图文字一同参与避让
removeLabelsFromMapTile(labelUids: Array)none从底图上移除文字标注,参数为 uid 数组,根据数组里的 uid 进行移除
getIconByClickPosition(clickPosition: Pixel)Object | null通过点击坐标获取当前点中的底图 icon,如果获取到返回其 {name, uid, position},否则返回 null

图层控制

方法返回值描述
addNormalLayer(layer: NormalLayer)none添加图层到地图实例对象
removeNormalLayer(layer: NormalLayer)none从地图实例对象移除图层

其他方法

方法返回值描述
getCurrentMaxTilt()number获取当前地图允许的最大倾斜角度
setTrafficOn()none开启路况图层
setTrafficOff()none关闭路况图层
showOverlayContainer()none显示覆盖物
hideOverlayContainer()none不显示覆盖物
setMapStyleV2(config: Object)none设置个性化地图,参数为个性化配置对象
startViewAnimation(viewAnimation: ViewAnimation)Number启动视角动画
cancelViewAnimation(viewAnimation: ViewAnimation)none停止视角动画
getMapScreenshot()

基于 MIT 许可发布