AI 地图
产品服务
解决方案
文档与支持
定价
更新时间: 2026/07/20 11:32

地图状态是指地图当前的视野表现,包括中心点、缩放级别、旋转角度(heading)和倾斜角度(tilt)四个核心维度。掌握这些概念及对应的 API,可以精确控制地图展示的区域、比例和视角。

初始化地图视野

创建地图实例后,使用 centerAndZoom 设置初始中心点和缩放级别

var map = new BMap.Map('container');
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);

centerAndZoom 适合初始化地图。地图已经显示后,如需改变单个状态,建议使用下面对应的状态设置方法。

视野中心点(Center)
1.设置和获取中心点

通过setCenter和getCenter设置和获取地图中心点。
setCenter默认会开启“自适应动画”,即目标位置离当前视野为一屏以内,则开启动画,超过一屏则不使用动画。
开发者可以通过noAnimation属性来强制关闭动画效果;在强需求动画切换视野的场景,也可以直接使用下文的flyTo方法。

map.setCenter(new BMap.Point(116.404, 39.915));
var center = map.getCenter();
console.log(center.lng, center.lat);
// 关闭动画并设置回调
map.setCenter(new BMap.Point(116.404,39.915), {
noAnimation: true,
callback: function () {
console.log('中心点切换完成');
}
});

setCenter方法也支持直接传入城市名,内部会调用地址解析服务转换为坐标,这会让设置中心点成为一个异步行为

map.setCenter('北京市');
2.监听中心点的变化

如果在业务中需要时刻监听当前中心点的位置,可以通过监听地图对象的moveend事件,moveend会在一次地图移动结束后触发。拖拽、平移和视野动画等引起地图移动的操作,都会在结束时触发该事件。如果要监听移动过程中可通过moving事件实现,但moving事件触发频率会很高,需注意节流。

map.addEventListener('moveend', function () {
console.log('本次地图移动结束:', map.getCenter());
});
缩放级别(Zoom)

缩放级别决定地图的显示比例,取值范围一般为3-21(支持浮点数),数值越大展示越精细。地图可用级别受地图类型、地图配置和容器尺寸等因素影响,应通过 getMinZoom 和 getMaxZoom 获取当前实例的实际范围。

1.设置和获取缩放级别

通过setZoomgetZoom设置与获取缩放级别。minZoommaxZoom可以在初始化地图的时候设置,也可通过setMinZoomsetMaxZoom来设置

var map = new BMap.Map('container', {
minZoom: 5,
maxZoom: 18
});
map.setZoom(15);
console.log('当前级别:', map.getZoom());
console.log('最小级别:', map.getMinZoom());
console.log('最大级别:', map.getMaxZoom());

setZoom也可以指定缩放中心点并设置回调

map.setZoom(18, {
zoomCenter: new BMapGL.Point(116.404, 39.915),
callback: function () {
console.log('本次缩放设置完成');
}
});

可以通过API实现快速控制地图的放大与缩小一级

map.zoomIn(); // 放大一级
map.zoomOut(); // 缩小一级
2.监听缩放级别变化

在需要实时判断缩放级别的业务场景下,可以通过监听地图对象的zoomend事件获取当前缩放级别来配合实现业务逻辑。zoomend 在一次缩放过程结束后触发。缩放过程中可通过 zoomstart 和 zooming 观察。

map.addEventListener('zoomend', function() {
console.log('当前缩放级别:', map.getZoom());
});

当缩放级别到达瓶颈时,可以通过zoomexceeded事件获取到信息。

map.addEventListener('zoomexceeded', function() {
console.log('已无法再缩放');
});
旋转与倾斜角度(Heading & Tilt)

旋转角度表示地图的正北朝向偏移,即水平方向的旋转。倾斜角度表示地图的俯仰视角,0 表示垂直俯视,数值越大视角越倾斜,视角越接近水平方向。

1.设置和获取旋转角度

setHeading 接受任意角度值,内部会自动按一周(360 度)归一化,例如传入 450 等价于 90,传入 -90 等价于 270。推荐按罗盘角度传值(正北 0、正东 90、正南 180、正西 270)。
getHeading 返回的是带符号角度,取值范围为 -180~180,正值表示顺时针偏离正北,负值表示逆时针偏离正北。这样可以直接体现偏离正北的方向和最短旋转量。
需要注意 getHeading 的返回值与 setHeading 的入参不保证数值一致,例如:

map.setHeading(270, {
callback: function() {
console.log(map.getHeading()); // 返回 -90,而不是 270
}
});
2.设置和获取倾斜角度

通过setTilt()getTilt()设置与获取倾斜角度。设置倾斜角度时,取值范围会被限制在 [0, 87]。通过鼠标/触摸手势拖拽倾斜时,实际上限更低,18 级以下为 50 度,18 级以上逐渐放宽到 73 度。

map.setTilt(60, {
callback: function() {
console.log('当前倾斜角度:', map.getTilt());
}
});
3.监听拖拽操作

由于旋转和倾斜通常都通过鼠标/触摸手势拖拽实现,所以在常见的业务场景中,可以通过监听dragend拖拽结束事件来获取旋转与倾斜角,实现相应的业务逻辑。

map.addEventListener('dragend', function () {
console.log('当前旋转角度:', map.getHeading());
console.log('当前倾斜角度:', map.getTilt());
});
设置组合视野
1.飞行动画视野切换 flyTo

flyTo方法可同时指定中心点、级别、旋转角度、倾斜角度,并以飞行动画的方式过渡

map.flyTo(new BMap.Point(116.404, 39.915), 18, {
heading: 90,
tilt: 60,
duration: 1200,
callback: function () { console.log('飞行完成'); }
});
2.自动计算视野 setViewport

根据传入的坐标点集合,自动计算出可以容纳所有点的中心点和缩放级别

map.setViewport([
new BMap.Point(116.30, 40.05),
new BMap.Point(116.50, 39.85)
], {
margins: [20, 20, 20, 20] // 上、右、下、左边距
});
地图状态相关事件
事件名触发时机

movestart

中心点移动开始

moving

中心点移动过程中

moveend

中心点移动结束

zoomstart

缩放开始

zooming

缩放过程中

zoomend

缩放结束

zoomexceeded

缩放超出 minZoom/maxZoom 范围

dragstart

拖拽开始

dragging

拖拽过程中

dragend

拖拽结束

上一篇

展示地图

下一篇

地图类型
本篇文章对您是否有帮助?