AI 地图
产品服务
解决方案
文档与支持
定价
更新时间: 2026/08/03 16:28
定位

JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。
浏览器定位精度和性能依赖浏览器自身特性,IP定位的精度值为城市级别。
对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见定位SDK相关章节

提供的定位服务

我们可以通过 BMap.Geolocation 获取用户的精确位置,也可以通过 BMap.LocalCity根据用户 IP 快速定位到所在城市。

接口类名说明

浏览器定位

Geolocation

优先调用浏览器H5定位接口,如果失败会调用IP定位

IP定位

LocalCity

根据用户IP 返回城市级别的定位结果

定位SDK辅助定位

Geolocation

当您的APP中有内置的Web页面,同时在Web页面需要提供您的当前位置信息时,可调用集成在App中的百度地图定位SDK来获取更精准的位置信息

浏览器定位

通过 getCurrentPosition 方法获取用户当前的精确位置。定位结束后,可通过 getStatus 方法判断定位是否成功:

var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function (result) {
if (geolocation.getStatus() === BMAP_STATUS_SUCCESS) {
map.centerAndZoom(result.point, 16);
map.addOverlay(new BMap.Marker({ position: result.point }));
var addr = result.address;
console.log(addr.province);
console.log(addr.city);
console.log(addr.district);
console.log(addr.street);
console.log(result.accuracy); // 定位精度,单位为米
} else if (geolocation.getStatus() === BMAP_STATUS_PERMISSION_DENIED) {
alert('定位失败:用户拒绝了定位授权');
} else if (geolocation.getStatus() === BMAP_STATUS_TIMEOUT) {
alert('定位失败:请求超时');
} else {
alert('定位失败');
}
});
状态码说明
状态码说明

BMAP_STATUS_SUCCESS

定位成功

BMAP_STATUS_PERMISSION_DENIED

用户拒绝了定位授权

BMAP_STATUS_SERVICE_UNAVAILABLE

定位服务不可用

BMAP_STATUS_TIMEOUT

定位请求超时

BMAP_STATUS_UNKNOWN_LOCATION

无法获取当前位置

城市定位

如果只需要获取所在城市,可以使用BMap.LocalCity根据用户 IP 定位城市。

var localCity = new BMap.LocalCity({
renderOptions: {
map: map,
},
});
localCity.get(function (result) {
console.log(result.name); // 城市名称
console.log(result.code); // 城市编码
console.log(result.center); // 城市中心点坐标,BMap.Point对象
});
注意事项
  1. 由于Chrome、iOS10以上系统等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。

  2. iOS15系统浏览器默认关闭位置请求,需要用户设置手机为允许/询问后方可获取精确的定位,定位权限的开启方式请参见iOS15定位问题

  3. 由于浏览器原生定位成功率并不高,我们提供ip和安卓sdk定位进行辅助,如果定位精准在城市级别,可提供ak联系我们提高定位精准度。

相关类参考

BMap.Geolocation
BMap.LocalCity


上一篇

地址解析

下一篇

地点检索
本篇文章对您是否有帮助?