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() |
